Десятое открытое личное первенство УрГУ по спортивному программированию
Версия для печати

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

Общие положения

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

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

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

Каждый участник получает в свое распоряжение один IBM PC совместимый компьютер конфигурации не хуже Intel Pentium 4 с 512 МБ ОЗУ, работающий под управлением операционной системы Windows 2000 или выше. В случае непредвиденных обстоятельств, таких как неисправность локальной сети или отсутствие электропитания в компьютерном классе, участникам могут быть предоставлены компьютеры более слабой конфигурации. Для составления исходных текстов решений и их отладки участникам предоставляются следующие среды программирования:

  • Microsoft Visual Studio 2005 - для языков C++ и C#
  • Borland Developer Studio 2006 - для языка Pascal
  • Eclipse 3.2/JDK 1.5 - для языка Java

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

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

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

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

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

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

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

Решением задачи является программа (файл с исходным текстом), написанная на одном из разрешенных языков программирования. Участник может решать задачи на различных языках программирования. Размер исходного текста одной программы с решением не может превышать 64КБ.

Входные данные подаются программе в файле input.txt, расположенном в текущем каталоге. Программа должна выводить ответ в файл output.txt, который должен быть сохранен также в текущем каталоге.

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

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

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

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

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

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

сообщение номер теста когда возникает возможная причина
Accepted не сообщается решение зачтено программа работает верно
Compilation error не сообщается компиляция программы завершилась с ошибкой в программе допущена синтаксическая ошибка; неправильно указан язык; размер исходного файла превышает 64КБ
Wrong answer сообщается ответ программы неверен ошибка в программе; неверный алгоритм
Presentation error сообщается программа завершила работу с ненулевым кодом возврата либо был осуществлен вывод на экран либо не был создан файл с ответом программа на языке C++ не завершается оператором return 0; ненулевой код возврата указан явно; неверно задано имя выходного файла
Runtime error сообщается программа аварийно завершила работу деление на ноль; бесконечная рекурсия; массивы имеют недостаточный размер
Time limit exceeded сообщается программа не закончила работу за установленное время ошибка в программе; программа ожидает ввода с клавиатуры; неэффективное решение
Memory limit exceeded сообщается программа превысила установленный предел памяти ошибка в программе; утечка памяти; неэффективное решение

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

Первыми тестами в наборе тестов всегда являются тесты из условия задачи. Тесты идут в том же порядке, в котором они приведены в условии задачи. Тесты нумеруются, начиная с единицы.

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

Определение победителей

Участники ранжируются по числу решенных (т.е. зачтенных) задач. Участники, решившие одинаковое число задач, ранжируются по суммарному времени решения. Суммарное время решения определяется как сумма времени решения каждой зачтенной задачи. Время решения задачи определяется как время от начала тура до момента посылки решения, признанного правильным, плюс 20 штрафных минут за каждое решение, признанное неправильным. Задачи, не признанные решенными к моменту окончания тура, никакого вклада в суммарное время не дают (в том числе, и в виде штрафов за неправильные решения).

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

Апелляция

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

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