Logo

SnarkNews on GCJ - 2016

 

Правила турниров, проводящихся по схеме GCJ.2008 (Google Code Jam original).

Участникам предлагается для решения некоторое количество задач. Задачи обычно располагаются в порядке возрастания возрастания сложности и максимального балла В момент начала соревнования условия всех предложенных задач становятся доступны для просмотра.

Каждая задача подразделяется на две подзадачи: Small input и Large input, обычно отличающиеся ограничениями. Изначально для сдачи доступна только подзадача Small Input.

Участник, считающий, что он решил подзадачу, может сделать попытку её сдать. Для этого участник запрашивает в системе архив с тестами по этой подзадаче. В течение фиксированного времени после запроса (отведённое время) участник обязан отправить соответствующий описанному в условии формату ответ на полученные тесты. Запрашивать тесты можно в течение фиксированного времени (определяемого правилами соревнования и называемого продолжительностью турнира), начиная с момента старта соревнования. В случае сомнения в честности решения жюри может потребовать предъявить исходный код или описание алгоритма решения (если задача была решена "вручную).

Для подзадачи типа Small Input отведённое время обычно равно 4 минутам. После получения участником архива тестов и отправки ответа, сгенерированного по этим тестам, участник получает результат проверки. Если формат отправленного решения не соответствует условию задачи (не совпадает количество тестовых примеров и так далее), посылка игнорируется и отсчёт времени не останавливается. Если участник не успел отправить ответ за отведённое время или если при проверке ответ на хотя бы одном из тестов оказался неверным, попытка признаётся неуспешной. Если при проверке ответ оказался верным на всех тестах, попытка признаётся успешной, а подзадача - сданной. После того, как попытка признана неуспешной (и только в этом случае), участник может сделать повторную попытку сдать эту же подзадачу; в этом случае участнику будет выдан системой уже другой архив тестов.

В случае, если участник решил подзадачу Small Input, он может попытаться сдать задачу Large Input. Для подзадачи типа Large Input отведённое время обычно равно 8 минутам. После получения участником архива тестов и отправки ответа, участник получает или сообщение о том, что формат отправленного решения не соответствует условию задачи (не совпадает количество тестовых примеров и так далее), при этом посылка игнорируется и отсчёт времени не останавливается, или сообщение Submitted, обозначающее, что задача принята для тестирования. За отведённое время участник может сделать отправить неограниченное количество вариантов ответа по данной подзадаче, финальным считается вариант, принятый для тестирования последним. По окончании отведённого времени делать повторные попытки по подзадаче Large Input нельзя (в том числе и в случае, если за отведённое время задача не была принята для тестирования - в этом случае считается, что участник задачу не сдал). Финальный вердикт по подзадаче Large Input (сдана или не сдана, становится известен только по окончании турнира.

Участники ранжируются по количеству набранных баллов (чем больше, тем выше), а при равенстве набранных баллов - по количеству затраченного времени (чем меньше, тем выше). Каждая подзадача оценивается в фиксированное количество баллов. В процессе соревнования количество набранных баллов равно сумме баллов по всем сданным подзадачам Small Input и по всем принятым для тестирования подзадачам Large Input. В итоговой таблице количество набранных баллов равно сумме баллов по всем сданным подзадачам.

Количество затраченного времени во время соревнований определяется как время, прошедшее от начала соревнования до последней на данный момент успешной попытки по подзадаче Small Input или принятой на тестирование попытки по подзадаче Large Input, (если таковая была позже последней успешной попытки по подзадаче Small Input), плюс штрафное время - по 4 минуты за каждую неуспешную попытку по сданным подзадачам Small Input. По окончании соревнований количество затраченного времени определяется как время, прошедшее от начала соревнований до момента сдачи последней по времени задачи плюс штрафное время, вычисляемое так же, как и во время соревнований.

Во время соревнования участникам доступна таблица, в которой для каждого участника отображаются сданные подзадачи Small Input, количество неуспешных попыток по этим задачам, принятые для тестирования подзадачи Large Input, а также время, прошедшее с момента начала тура до момента, когда подзадача была соответственно сдана или последний раз принята для тестирования, количество набранных баллов и количество затраченного времени. В конце соревнования в таблице отмечены сданные подзадачи Small Input и Large Input, количество неуспешных попыток по задачам Small Input, время, прошедшее с начала тура до момента сдачи каждой задачи, а также итоговое количество баллов и итоговое количество затраченного времени.

Итоговым результатом турнира является отсортированная по убыванию набранных баллов (а при равенстве - по возрастанию количества затраченного времени) таблица, в которой отражены финальные вердикты по задачам Large Input.