ENG  RUSTimus Online Judge
Online Judge
Problems
Authors
Online contests
About Online Judge
Frequently asked questions
Site news
Webboard
Links
Problem set
Submit solution
Judge status
Guide
Register
Update your info
Authors ranklist
Current contest
Scheduled contests
Past contests
Rules
back to board

Discussion of Problem 1639. Chocolate 2

Скорость негодует
Posted by Aleksandr 16 Jan 2017 02:13
Народ, кто может указать на часть моего кода которая тормозит алгоритм? Чистил как мог, не смог выйти за 0.125 секунд

import java.util.Scanner;
public class Timus {
        public static void main (String[] args)
        {
            Scanner in = new Scanner(System.in);

            byte m = in.nextByte(), n = in.nextByte();

            System.out.println( (m*n-1)%2==0 ? "[second]=:]" : "[:=[first]");

            in.close();

        }
}
Re: Скорость негодует
Posted by Oleg Baskakov 16 Jan 2017 04:49
Всё нормально, просто джава медленная. Вон у вас задача a+b за 0.109.
Re: Скорость негодует
Posted by Aleksandr 16 Jan 2017 15:12
Спасибо за пояснение;) а каким же образом люди в топе выходят за 0.05 секунд? Вон первое место в А+B аж за 0.015 работает! Наверняка люди обходят стороной медленные методы и операции. Может вы знаете ресурс где можно почитать об этом? Поиск в гугле ни привёл ни к чем
Re: Скорость негодует
Posted by Oleg Baskakov 16 Jan 2017 23:11
К сожалению, не могу сказать точно. Тут есть несколько моментов.
Во-первых, более ранняя джава была быстрее, что можно увидеть по тому, что в основном большинство сабмитов, где указано java 1.5 / java 1.6, быстрее, чем те, в которых java 1.8. Конечно, этот сабмит а+б за 0.015 как раз на джаве 1.8, для меня это конечно странно. Может в коде в опциях был выставлен какой-то ключ для использования более ранней версии или типа того...
Во-вторых, "общий" совет, который я могу дать — используйте BufferedReader (и если надо, StreamTokenizer) вместо Scanner'a, потому что последний в джаве обычно медленнее. (см. также код внизу страницы http://acm.timus.ru/help.aspx?topic=java&locale=ru). Хотя, конечно, для программ с маленьким объёмом входных данных разница не должна быть сильно критичной, но там где надо считывать со входа мегабайты — она очень ощутима.