2016-01-06 2 views
-1

https://www.codechef.com/problems/TSORT/ - Это проблема должна быть решенате же решения, различные результаты на Codechef (Java)

https://www.codechef.com/viewsolution/9110492 - Мое решение в Java (реализовано сравнение сортировки)

https://www.codechef.com/viewsolution/8599514 - Некоторые другие решения лиц в Java (он также реализовал сравнение сортировки)

Когда я отправляю свое решение, я получаю TLE (Time Limit Exceeded), но другое решение получает AC.

В чем могут быть возможные причины этой разницы?

Примечание: Если решения отличаются друг от друга, сообщите мне о различиях и областях улучшения кода.

ответ

1

Одна вещь, которая соответствует глазу, - использование (собственная реализация) FastScanner класс в «другом» решении. Просто прочитайте данные из System.in и не ожидайте (как и ваш код!) Для полных строк, указанных в System.in.

Я бы предположил, что ваше решение ждет окончания линии для вашего BufferedReader, чтобы продолжить, но, учитывая ввод теста, он никогда не делает.

Позвонив BufferedReader.readLine() блокировать до

а) EOF читается (не будет с STDIN, если намеренно) или

б) линия (включая действительный разделитель строки полукокса (s) для этой платформы).

Ваш конкурент только что прочитал от System.in до большого byte[] - столько информации, сколько было доступно в то время. Поэтому можно сэкономить, чтобы предположить, что только нет разрыва строки в System.in, поэтому ваш код застрял.

Ввод в присваивание конкретно не показывает разрыва строки после последнего int. Так что, вероятно, вы ожидаете большего ввода.

+0

Спасибо за ваш ответ. Не могли бы вы вкратце объяснить, что проблема с использованием BufferedReader для принятия входных данных для данного формата ввода. Ваша обратная связь может помочь мне лучше понять концепции! Спасибо –

+0

Отредактировал мой вопрос, чтобы объяснить больше. – Jan

Смежные вопросы