Уральские олимпиады
Уральский Федеральный университет имени первого Президента России Б.Н.Ельцина
Открытый чемпионат Урала по спортивному программированию 2012
Версия для печати

Правила соревнований

Проведение соревнования

Соревнование состоит из пробного, игрового и основного туров.

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

Игровой тур длится 4 часа. Задача игрового тура состоит в написании программы, соревнующейся с программами других участников по некоторым правилам. Условие задачи, а также регламент проведения игрового тура объявляются во время соревнований. Итоги игрового тура подводятся отдельно и не влияют на результаты основного тура.

Основной тур длится 5 часов. Жюри имеет право продлить тур в случае непредвиденных обстоятельств. Во время основного тура командам предлагается для решения от 8 до 13 задач с условиями на русском языке. Жюри принимает решения на языках программирования C++, C#, Pascal, Java. Отправка решений осуществляется во время тура с помощью программного обеспечения соревнования. Через некоторое время после отправки команде становится доступен результат проверки. После окончания тура решения не принимаются.

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

Во время основного тура участники могут общаться только с членами своей команды и членами технического комитета. Команда не должна создавать излишнего шума, чтобы не мешать другим участникам. Команда может обратиться к жюри с вопросом по условию какой-либо задачи. Вопрос должен быть сформулирован на русском языке и предполагать ответ «Да» или «Нет». Жюри может ответить на поставленный вопрос «Да», «Нет», «Смотрите условие» или «Без комментариев». Жюри может разослать ответ на вопрос всем участникам соревнования.

Команда может распечатать своё решение на принтере. Необходимые средства для печати предоставляются программным обеспечением соревнования. Распечатка будет доставлена команде представителем технического комитета. Количество листов бумаги на каждую команду ограничено.

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

Проверка решений

Решением задачи является файл с исходным текстом программы, написанной на одном из разрешённых языков программирования. Команда может решать задачи на различных языках программирования. Допустимый размер исходного текста одной программы с решением ограничен.

Входные данные подаются программе в стандартном потоке ввода. Программа должна выводить ответ в стандартный поток вывода.

В решениях задач запрещается:

  • работа с любыми файлами;
  • выполнение внешних программ и создание новых процессов;
  • работа с GUI-элементами (окнами, диалогами и т.д.);
  • работа с внешними устройствами (принтером, звуковой картой и т.д.);
  • использование сетевых средств.

При проверке решений используются заранее объявленные компиляторы. Однако набор функций, доступных программам во время проверки, ограничен. В ходе пробного тура команды должны убедиться в доступности необходимых им функций. До начала основного тура команда может обратиться к жюри с просьбой расширения набора доступных функций.

Решение проверяется путём последовательного запуска на наборе тестов, который недоступен участникам и является одинаковым для всех команд. Решение засчитывается в том случае, если оно выдаёт верные ответы на все тесты. Первыми тестами в наборе всегда являются тесты из условия задачи, они идут в том же порядке, в котором приведены в условии. Полный набор тестов не предоставляется участникам даже после окончания соревнования. Тестирование производится автоматически, поэтому программы должны в точности соблюдать форматы входных и выходных данных, описанные в условии каждой задачи. Все входные данные предполагаются корректными и удовлетворяющими всем ограничениям, указанным в условии задачи.

Для каждой задачи определены максимальное время выполнения, объём доступной памяти и максимальный размер выходных данных для одного теста. Если на одном из тестов программа превысила это время, выделила больше памяти или вывела больше данных, решение считается неверным.

После проверки команде сообщается о том, зачтено решение или нет. Если решение не зачтено, сообщается информация о первой случившейся ошибке: тип ошибки и номер теста, на котором она произошла (тесты нумеруются, начиная с единицы). В этом случае решение не проверяется на последующих тестах. Сообщение от проверяющей системы может быть одним из следующих:

сообщение расшифровка возможная причина
Accepted решение засчитано программа работает верно
Compilation error компиляция программы завершилась с ошибкой синтаксическая ошибка; неправильно указан язык; размер исходного файла слишком большой
Wrong answer N ответ программы неверен ошибка в программе; неверный алгоритм; программа выводит ответ в файл
Crash N программа аварийно завершила работу деление на ноль; бесконечная рекурсия; массивы имеют недостаточный размер
Time limit exceeded N программа не закончила работу в установленное время бесконечный цикл; неэффективное решение
Memory limit exceeded N программа превысила установленное ограничение по памяти утечка памяти; неэффективное решение
Output limit exceeded N программа превысила ограничение на размер выходных данных бесконечный цикл; ошибка в программе

При возникновении ошибки Compilation error программа не запускается ни на одном тесте. При возникновении ошибок Crash, Memory limit exceeded, Time limit exceeded, Output limit exceeded вывод программы не проверяется.

Результаты

Команды ранжируются по числу решённых (т.е. зачтённых) задач. При равенстве числа решённых задач выше ставится команда, имеющая меньшее суммарное штрафное время. При равенстве числа решённых задач и штрафного времени выше ставится команда, которая раньше сдала свою последнюю зачтённую задачу.

Суммарное штрафное время определяется как сумма штрафных времён каждой зачтённой задачи. Штрафное время отдельной задачи определяется как время от начала тура до момента посылки первого решения, признанного правильным, плюс 20 минут за каждую предыдущую посылку решения на эту задачу (не считая посылок с вердиктом Compilation error). Нерешённые задачи никакого вклада в суммарное штрафное время не вносят (в том числе и в виде штрафов за неправильные решения).

Во время тура командам доступна таблица с текущими результатами. За час до конца тура таблица замораживается. Все промежуточные результаты являются неофициальными. Официальные результаты объявляются на закрытии соревнования.

Апелляция

Если команда считает, что в одной или нескольких задачах содержатся ошибки, она может подать апелляцию. Апелляция подаётся в письменном виде во время или сразу после окончания основного тура. Команда должна изложить основания для апелляции и предположения о возможном характере ошибки.

При наличии апелляций председатель жюри назначает апелляционную комиссию. Если комиссия признает, что некоторые тесты являются некорректными (противоречащими условию задачи), то эти тесты могут быть исправлены или удалены, а задача перепроверена (будут перепроверены решения всех команд, а не только той, которая подала апелляцию).