SberFight — я так и не прошёл в финал
Сегодня как следует отоспался и решил всё же взяться за перепрохождение задач из SberFight. Когда зашёл на сайт, обнаружил, что уже вывалился из ТОП-250, и несколько расстроился. Но решил, что сейчас перепройду несколько задач, и всё же вернусь. Взялся за задачу №3. Оказалось, что бонусные баллы за её решение дают только если решить за 20 минут.
Писать в этот раз решил не на PHP, а на Python — на нём код значительно короче и набирается быстрее. Но увы, и это не помогло. Хотя набросал решение очень быстро, оно не проходило два теста. Стал думать, в чём дело. Довольно скоро нашёл условие, при котором оно действительно не работало (когда во входных данных большая часть элементов имела примерно одинаковые значения и одно-два сильно отличающихся в большую или меньшую сторону). И тут меня переклинило от стресса, что время идёт, а я не знаю, что делать. И только когда прошло минут тридцать, и я решил «всё, теперь уже ничего не поделаешь», вдруг пришло озарение, как надо решать. Причём решение было ну совсем примитивное, просто нужно было решать задачу итерациями, а не пытаться найти формулу, которая позволила бы посчитать сразу, чем я всё это время пытался заниматься.
В общем, прихожу к выводу, что конкурс, где всё ТАК зависит от времени — это не дело для slow liferа: стресса много, толку мало. (Кстати, первый раз я показал более хорошие результаты именно потому что не знал про ограниченность времени, думал, что там по числу попыток запуска кода результат будет считаться.) Потом ещё глянул в рейтинговую таблицу, у первого игрока в рейтинге — целых 4400 очков. То есть 3600 получено именно бонусами за время, и только 800 — за сами решения. Интересно, кстати, там хоть предусмотрели защиту от накрутки? А то имея две SIM-карты, можно делать так: сохранять решения, сделанные под одним аккаунтом, потом регистрироваться ещё раз с другой SIMки, и выкладывать их, переименовав пару переменных, и только за счёт этого быть в ТОПе.
Писать в этот раз решил не на PHP, а на Python — на нём код значительно короче и набирается быстрее. Но увы, и это не помогло. Хотя набросал решение очень быстро, оно не проходило два теста. Стал думать, в чём дело. Довольно скоро нашёл условие, при котором оно действительно не работало (когда во входных данных большая часть элементов имела примерно одинаковые значения и одно-два сильно отличающихся в большую или меньшую сторону). И тут меня переклинило от стресса, что время идёт, а я не знаю, что делать. И только когда прошло минут тридцать, и я решил «всё, теперь уже ничего не поделаешь», вдруг пришло озарение, как надо решать. Причём решение было ну совсем примитивное, просто нужно было решать задачу итерациями, а не пытаться найти формулу, которая позволила бы посчитать сразу, чем я всё это время пытался заниматься.
В общем, прихожу к выводу, что конкурс, где всё ТАК зависит от времени — это не дело для slow liferа: стресса много, толку мало. (Кстати, первый раз я показал более хорошие результаты именно потому что не знал про ограниченность времени, думал, что там по числу попыток запуска кода результат будет считаться.) Потом ещё глянул в рейтинговую таблицу, у первого игрока в рейтинге — целых 4400 очков. То есть 3600 получено именно бонусами за время, и только 800 — за сами решения. Интересно, кстати, там хоть предусмотрели защиту от накрутки? А то имея две SIM-карты, можно делать так: сохранять решения, сделанные под одним аккаунтом, потом регистрироваться ещё раз с другой SIMки, и выкладывать их, переименовав пару переменных, и только за счёт этого быть в ТОПе.