Сегодня я решил написать квалификацию TCO со своего MacBook Pro. До этого мне такая бредовая затея в голову не приходила, но сегодняшний день оказался для меня богат на подвиги.
За пол часа до начала контеста я понял что у меня в апплете не настроен ExampleBuilder, не установлена idea, не говоря уж о том что отсутствует дефолтный проект в котором решаются задачи. Одновременно с этим пришло осознание того, что на маке я ни разу не писал соревнования, а мой последний СРМ был 2 июля 2009.
Но не беда подумал я. Idea скачалась и установилась быстро, плагин настроился, а проект создался... как раз к началу соревнования.
Первая неприятность подстерегла меня после отрытия 250й задачи. Выяснилось что hotkeys для виндовой intellij idea не работают на маке... Предсказуемый сюрприз. Поэтому первую задачу я сдавал долго и мучительно, и сдалась она за 199.66.
Вторая задача сдалась лучше, за 406.29. Но неприятность поджидала за другим углом. Систем тест выявил, что программа работающая за 90ms на моем макбуке превышает лимит в 2 cекунды на топкодеровской конфигурации. Все дело, видимо, в различиях между ява машинами для mac os и linux, либо в том что topcoder использует linux с 2.4 ядром (хотя во вторую причину верится с трудом). Я конечно понимаю что глупо рассчитывать на оптимизации в JRE, и 200 млн. раз в цикле делать обращения к листу (ans += result.get(result.size() - 1)), тем более что можно вообще обойтись операцией умножения сделав все за O(1). Но тестирование на макбуке перед посылкой показало результат в 90ms именно на этом максимальном тесте, поэтому решение было послано без колебаний. В топкодер арене, естественно, решение на максимальном тесте запущено не было, т.к. подозрения на TL отпали после получения мгновенных ответов на локальном тестировании.
for (int i = 0; i < 2 * 10^8; i++) {
ans += result.get(result.size() - 1);
}
Local: (Mac OS 10.6.3, JRE 1.5 or 1.6 - проверил обе, версия не имеет значения): 100ms
Topcoder (Linux w/2.4 kernel, JRE 1.5.0_03): ~5000ms судя по ответу админов
Обидно блин.
Последняя задача оказалась довольно таки легкой, и бинарный поиск был написан за 10 минут до конца соревнования. Запуск семпл тестов выявил пару неправильных ответов из-за обидного бага, закравшегося в решение. Освоение горячих клавиш для дебага программы оказалось за гранью разумного, поэтому последние 10 минут были потрачены не очень продуктивно. Как водится, баг был найден сразу после окончания соревнования.
В сухом остатке 1 задача вместо положенных 3х, и придется еще раз писать квалификацию. До этого дня мне казалось что такой исход событий невозможен :)
FML
За пол часа до начала контеста я понял что у меня в апплете не настроен ExampleBuilder, не установлена idea, не говоря уж о том что отсутствует дефолтный проект в котором решаются задачи. Одновременно с этим пришло осознание того, что на маке я ни разу не писал соревнования, а мой последний СРМ был 2 июля 2009.
Но не беда подумал я. Idea скачалась и установилась быстро, плагин настроился, а проект создался... как раз к началу соревнования.
Первая неприятность подстерегла меня после отрытия 250й задачи. Выяснилось что hotkeys для виндовой intellij idea не работают на маке... Предсказуемый сюрприз. Поэтому первую задачу я сдавал долго и мучительно, и сдалась она за 199.66.
Вторая задача сдалась лучше, за 406.29. Но неприятность поджидала за другим углом. Систем тест выявил, что программа работающая за 90ms на моем макбуке превышает лимит в 2 cекунды на топкодеровской конфигурации. Все дело, видимо, в различиях между ява машинами для mac os и linux, либо в том что topcoder использует linux с 2.4 ядром (хотя во вторую причину верится с трудом). Я конечно понимаю что глупо рассчитывать на оптимизации в JRE, и 200 млн. раз в цикле делать обращения к листу (ans += result.get(result.size() - 1)), тем более что можно вообще обойтись операцией умножения сделав все за O(1). Но тестирование на макбуке перед посылкой показало результат в 90ms именно на этом максимальном тесте, поэтому решение было послано без колебаний. В топкодер арене, естественно, решение на максимальном тесте запущено не было, т.к. подозрения на TL отпали после получения мгновенных ответов на локальном тестировании.
for (int i = 0; i < 2 * 10^8; i++) {
ans += result.get(result.size() - 1);
}
Local: (Mac OS 10.6.3, JRE 1.5 or 1.6 - проверил обе, версия не имеет значения): 100ms
Topcoder (Linux w/2.4 kernel, JRE 1.5.0_03): ~5000ms судя по ответу админов
Обидно блин.
Последняя задача оказалась довольно таки легкой, и бинарный поиск был написан за 10 минут до конца соревнования. Запуск семпл тестов выявил пару неправильных ответов из-за обидного бага, закравшегося в решение. Освоение горячих клавиш для дебага программы оказалось за гранью разумного, поэтому последние 10 минут были потрачены не очень продуктивно. Как водится, баг был найден сразу после окончания соревнования.
В сухом остатке 1 задача вместо положенных 3х, и придется еще раз писать квалификацию. До этого дня мне казалось что такой исход событий невозможен :)
FML