Правила индивидуальной студенческой олимпиады по программированию
Общие положения
На олимпиаде участнику предоставляется персональный компьютер
(Pentium-II, 333MHz, 32Mb ОЗУ или выше), работающий под операционной системой Windows или Linux, с необходимым программным обеспечением.
На олимпиаде используется специальная система проведения контестов
ejudge, которая позволяет проверять решения в реальном режиме, предоставляет информацию о текущем положении участников,
а также возможность участникам задавать вопросы жюри и получать на них ответы.
Перед основным туром проводится пробный тур (продолжительностью примерно 1 час, на котором предлагается 1-2 простые задачи). Пробный тур имеет своей целью познакомить участников с техникой, программным обеспечением и правилами олимпиады. Результаты пробного тура никак не учитываются при подведении итогов олимпиады.
На основном туре участникам будет предложено 6-8 задач. Продолжительность тура 5 часов. Жюри может продлить время тура в случае каких-либо непредвиденных обстоятельств.
Во время тура участники решают предложенные задачи. Решением задачи является программа, написанная на одном из допустимых языков программирования. Разные задачи можно решать на разных языках программирования. Программа должна представлять собой один файл.
Все задачи предполагают, что входные данные читаются из стандартного потока
входа (
stdin
в языках C/C++ или
input
в языке Pascal). Программа должна результат
вычислений выводить в стандартный поток выхода (
stdout
в языках C/C++ или
output
в языке Pascal). Форматы входа и выхода подробно описаны в условии каждой задачи. Обычно, вводимые численные данные разделяются произвольным числом пробельных символом (пробел, символ табуляции или символ перевода строчки).
Во время тура
разрешается пользоваться любой литературой и личными записями.
Категорически
запрещается пользоваться любыми носителями информации в электронном виде (дискетами, CD и DVD дисками, USB flash drive'ами и др.), электронными устройствами (калькуляторами, электронными записными книжками, собственными компьютерами) и средствами связи (мобильные телефоны, пейджеры), общаться с руководителями команд и другими участниками.
Проверка решений производится прямо во время соревнований.
В течение первых 4-х часов тура всем доступна таблица, в которой отображены
текущие положение участников и баллы, заработанные каждым участником за каждую задачу.
За час до конца тура эта таблица перестаёт обновляться. Конечные результаты
объявляются на награждении.
Во время тура участники могут общаться только с членами жюри и дежурными по аудиториям.
Участник может посылать вопрос жюри, при этом предполагается, что ответ
на него может быть "Yes" или "No". Жюри вправе ответить "No comments",
это обычно означает, что ответ на заданный вопрос находится в условии задачи.
За нарушение правил олимпиады участник может быть дисквалифицирован.
Языки программирования и программное обеспечение
На сервере, где будут проверятся решения, доступны следующие компиляторы:
- Gnu C/C++ v3.3.3
- Free Pascal 1.0.10
- Gnu Java v3.3.3
- C# Mono JIT compiler version 0.31
При этом участникам предоставляются следующие компиляторы и среды разработки:
- Windows
- Borland C++ v3.1
- Turbo Pascal v7.0
- Microsoft Development Studio .NET (VC++, C#)
- Microsoft Visual C++ v6.0
- Dev-C++ v4.9.8
- Free Pascal 1.0.10
- Eclipse (for Java developers)
- Notepad
- Linux
- Редакторы vim, mcedit, xemacs
- Gnu C/C++ v3.3.3 (gcc,g++)
- Gnu Java v3.3.3 (gcj)
- Free Pascal 1.0.10 (fpc)
- C# Mono JIT compiler version 0.31 (mono)
Проверка решений
Проверка решений производится во время соревнований.
Пользуясь web-интерфейсом участники посылают свои решения проверяющей системе. Размер исходного кода посылаемого решения не должен превышать 64 Kb. Система компилирует посланную программу указанным компилятором и, в случае успешной компиляции, проверят программу на множестве тестов. Время работы программы на каждом тесте и размер доступной памяти ограничены, эти ограничения будут указаны в формулировках задач. Указанные ограничения по памяти включают всю память, используемую программой, в том числе память, выделенную под код программы, стек и динамическую память.
Через небольшое время после посылки решения (обычно меньше минуты) участник получает сообщение с результатами тестирования, в котором указано количество прошедших тестов, количество набранных баллов на текущей попытке и результат проверки:
Результат проверки решения | Описание | Возможная причина |
OK | Задача прошла все тесты | Решение правильное |
Partial Solution | Частичное решение: не прошли некоторые тесты | См. следующую таблицу |
Compilation Error | В результате компиляции не создан исполняемый файл | Синтаксическая ошибка в программе. Указан неверный язык программирования (например C для программы на C++) |
Доступна также более подробная информация, где сообщается результат проверки по каждому тесту:
Результат проверки теста  | Описание | Возможная причина |
OK | Тест пройден | Программа на этом тесте работает верно. |
Presentation Error | Программа проверки не может проверить выходные данные, т.к. их формат не соответствует описанному в условии | Неверный формат вывода. Выходной файл имеет неправильное имя, или отсутствует. Программа не печатает результат. В выходной файл выдается лишняя информация. Программа не закрывает выходной файл. |
Runtime Error | Ошибка выполнения. | Программа вышла с ненулевым кодом завершения либо произошел аварийный выход программы (crash). В этом случае результат работы программы не проверяется. Программа на языке C/C++ не завершается оператором 'return 0'. Ненулевой код возврата указан в программе. Программа превысила установленный в условии предел памяти. |
Time Limit Exceeded | Программа превысила установленный в условии предел времени. | Неэффективное решение. Ошибка в программе. |
Wrong Answer | Ответ не верен | Ошибка в программе. Неверный алгоритм решения. |
Участник может послать не более 25 различных решений каждой задачи.
В решениях задач
запрещено
- любой ввод/вывод кроме чтения из стандартного входа и записи в стандартный выход
- любое использование сетевых средств
- любые другие средства или действия, которые могут нарушить процесс проверки и прохождения первенства.
Решение должно выдавать одинаковые ответы на одинаковые тесты, вне зависимости от времени запуска и программного окружения. Жюри вправе произвести неограниченное количество повторных тестирований программы участника и выбрать наихудший результат по каждому из тестов.
Жюри обладает исключительным правом определения правильности прохождения тестов, выставления оценок, определения победителей и дисквалификации участников. Жюри разбирает вопросы, возникающие во время олимпиады. Решения жюри окончательны и обжалованию не подлежат.
Апелляция не проводится.
Система оценки
Решение задачи проверяется на заранее подготовленном жюри наборе тестов, одинаковом для всех участников. Каждый тест оценивается некоторым количеством баллов.
Дополнительные баллы (от 10 до 15 в зависимости от задачи) участник получает, если ее решение проходит все тесты. Каждая задача оценивается суммарно 50 баллами. За каждую дополнительную попытку сдачи задачи вычитается 2 балла. При этом результат участника по задаче (баллы, которые получает команда за задачу) равен максимуму из всех попыток участника по этой задаче.
Например, если после первой попытки участник получил 16 баллов, то результат равен 16. Если после второй попытки решение набрало лишь 10 баллов, то результат по-прежнему 16. Пусть после третьей попытки решение набрало 26 баллов, тогда результат команды 22, так как 4 балла вычитается за предыдущие попытки. Если после четвертой попытки решение пройдет все тесты, то результат будет равен 44: из 50 баллов вычитаются по 2 балла за каждую из трех дополнительных попыток.
Участники ранжируются по сумме баллов за все задачи.