Правила соревнований
Соревнования проходят на IBM PC совместимых компьютерах в следующей конфигурации: процессор Intel Pentium-4 и выше (или совместимые), ОЗУ не менее 512 мегабайт, операционная система: Windows версии XP и выше. Все компьютеры подключены к сети “Microsoft Network”.
Используются системы программирования Free Pascal >= 2.0.4, Microsoft Visual C/C++ .NET и 6.0, GNU C/C++ MinGW >= 3.4.2 (включая среду Dev-Cpp), Java >= 6.0. Для Java установлена среда Eclipse. Допускается также использование других систем программирования, доступных в системе автоматического тестирования. Кроме того, в сети установлен редактор EMacs >= 21.3 и команднострочные версии Delphi, а также некоторые другие полезные программы. Эти системы будут доступны на каждом компьютере.
Схема проведения
Каждой команде предоставляется один компьютер на троих.
Участникам будет предложено для решения не менее 6 задач. Продолжительность тура составляет 5 часов. Жюри имеет право продлить соревнования в случае каких-либо непредвиденных обстоятельств.
Участникам запрещается пользоваться любыми материалами в печатном или рукописном виде, за исключением словарей. Условия будут сформулированы на русском языке. Запрещается приносить и использовать любые электронные устройства и носители информации: калькуляторы, записные книжки, сотовые телефоны, электронные переводчики, и т. д. Нарушение этого правила повлечет за собой немедленную дисквалификацию команды.
Во время соревнований команды решают предложенные задачи. Решением является программа (файл с исходным текстом), составленная на одном из разрешенных языков программирования. Программа не должна включать в себя других файлов или модулей. Команда может решать разные задачи на разных языках программирования.
Проверка представленных решений производится во время соревнований. Участники посылают решения в жюри с помощью предоставленного программного обеспечения. Жюри компилирует полученное решение с помощью пакетных компиляторов FPC.EXE, CL.EXE, GCC.EXE/G++.EXE, DCC32.EXE, JAVAC.EXE, поэтому все опции компиляции, отличные от умалчиваемых значений, должны быть указаны в исходном файле.
Входные данные для каждой задачи расположены в одном входном файле, имя которого указано в тексте задачи. Программа должна формировать выходной файл с заданным именем. Входные и выходные файлы располагаются в текущей директории. Запрещается выводить какую-либо информацию на экран.
В решениях задач запрещено использовать:
Создание и работу с любыми файлами, за исключением тех, которые явно указаны в условии задачи (входные и выходные файлы).
Работу с подкаталогами.
Любое использование сетевых средств.
Любые другие средства или действия, которые могут нарушить работу программного обеспечения олимпиады.
Жюри использует различные методы контроля за соблюдением данных требований. Команда, намеренно, по решению жюри, нарушившая эти условия, дисквалифицируется.
Решение проверяется путем запуска на наборе тестов, который недоступен участникам. Решение засчитывается в том случае, если оно выдает верные ответы на все тесты.
Тестирование производится автоматически, поэтому программы должны в точности соблюдать форматы входных и выходных файлов, описанные в условии каждой задачи. Если не оговорено отдельно, все входные данные предполагаются корректными и удовлетворяющими всем ограничениям, указанным в условии.
Для каждой задачи указывается максимальное время выполнения для одного теста. Если на одном из тестов программа превысила это время, решение считается неверным.
По мере готовности команда посылает свои решения в жюри для проверки. После этого команда может продолжать работу над другими задачами. После того, как жюри проверит решение (проверка занимает несколько минут), команда получает сообщение с результатами тестирования. Это сообщение появляется на экране. Если решение не зачтено, сообщается тип ошибки и номер теста, на котором ошибка произошла.
Возможные типы ошибок
Все тесты выполняются в одном и том же порядке с возрастанием сложности. Номер ошибочного теста, указываем в результатах проверки, есть номер первого теста, не прошедшего проверку. Например, если жюри сообщило, что “Превышен предел времени на тесте номер 9”, это означает, что:
Тесты с 1 по 8 прошли проверку.
На более сложном, чем предыдущие восемь, девятом тесте, программа превысила предел времени.
В этом случае можно заключить, что алгоритм правильный, но не эффективный. Если жюри зафиксировало “Нарушение формата вывода на тесте номер 1”, команда может предположить, что она решила задачу, но послала ее на проверку вместо другой.
Возможные типы ошибок:
Compilation error (Ошибка компиляции). Возникает, если в результате компиляции не создан исполняемый файл. Возможные причины:
А. Синтаксическая ошибка в программе.
Б. Неправильное расширение файла с решением, например, cpp для программы на Паскале.
Security Violation (Нарушение правил соревнований). Возникает, если программа нарушила правила соревнований (недопустимый ввод/вывод и т.п.). Возможные причины:
А. Неправильно указано имя входного и/или выходного файла
Б. Ошибка в программе.
В. Намеренное нарушение правил (в этом случае команда дисквалифицируется).
Time Limit Exceeded (Превышение предела времени). Возникает, если программа превысила установленный в условии предел времени или “подвесила” проверяющий компьютер. Возможные причины:
А. Неэффективное решение.
Б. Ошибка в программе.
4. Memory Limit Exceeded (Преывшение предела памяти). Возникает, если программа превысила установленный в условии предел памяти. Возможные причины:
А. Неэффективное решение.
Б. Ошибка в программе.
Runtime Error (Ошибка исполнения). Возникает, если программа завершила работу с ненулевым кодом возврата. Возможные причины:
А. Ошибка исполнения (Runtime error).
Б. Программа на языке C/C++ не завершается оператором “return 0”.
В. Ненулевой код возврата явно указан в программе.
Presentation error (Нарушение формата вывода). Возникает, если программа проверки не может проверить выходные данные, так как их формат не соответствует описанному в условии задачи. Возможные причины:
А. Неверный формат вывода.
Б. Выходной файл с правильным именем отсутствует.
Wrong Answer (Неверный ответ). Возникает, если ответ, выдаваемый программой неверен. Возможные причины:
А. Неверный алгоритм решения
Б. Небольшое нарушение формата вывода (например, переставлены два похожих по смыслу числа)
Ошибки имеют приоритет в соответствии с порядком их перечисления в этом списке. Например, если возникла ошибка исполнения, то результат работы программы не проверяется.
Во время соревнований участники могут задавать вопросы по условиям задачи в письменном виде. Вопрос должен быть составлен в форме, предполагающей ответы “ДА” или “НЕТ”. Команда заполняет “Лист вопроса” и передает его жюри. Когда жюри ответит на вопрос, команда получит этот “Лист” с ответом обратно. Если вопрос поставлен некорректно или ответ прямо следует из условия задачи, жюри отвечает “Без комментариев”. Если жюри согласно, что в условии присутствует неясность или ошибка, то всем командам делается соответствующее объявление.
Подведение итогов.
Выигрывает команда, правильно решившая наибольшее число задач. В случае равенства числа решенных задач, выигрывает команда с наименьшим штрафным временем. Штрафное время – это суммарное время решения задач с добавлением 20 минут за каждое неверное решение (учитывается только для решенных задач). Каждая попытка сдать задачу после того, как решение для данной задачи уже было зачтено, не учитывается при подсчете штрафного времени.
Во время соревнований участники могут просматривать текущие результаты с помощью вкладки «monitor» клиента тестирующей системы.
По традиции проведения данных соревнований для повышения интереса к церемонии награждения жюри прекращает обновление текущих результатов на вкладке «monitor» за один час до конца соревнований.
Во время проведения состязаний участники могут общаться ТОЛЬКО с членами своей команды, а также с представителями жюри и организационного комитета соревнований.
За нарушение правил проведения соревнований команда может быть дисквалифицирована.
Жюри обладает исключительным правом определения правильности присланных решений, определения победителей и дисквалификации команд. Жюри разбирает вопросы, возникающие в результате непредвиденных событий и обстоятельств. Решения жюри окончательны и обжалованию не подлежат.
Набор тестов, на которых жюри проверяет решения, не предоставляется участникам даже после окончания олимпиады.
Проверяющая система.
Решение отправляется в жюри с помощью кнопки «submit» в клиенте тестирующей системы. В окне необходимо заполнить поля идентификатора задачи, используемый компилятор, а также имя файла.
Допустимы пять расширений в имени исходного файла:
PAS – Free Pascal: компилируется fpc.exe из пакета Free Pascal >=2.0.4 (строка: fpc -O2)
DPR – Delphi: компилируется dcc32.exe из пакета Borland Delphi 7.0 (строка: dcc32 -cc)
CPP – C++: компилируется cl.exe из пакета Microsoft Visual C/C++ .NET >=2005 или Microsoft Visual C/C++ 6.0 (строка: cl /O2 /GX), можно также компилировать g++.exe из пакета MinGW >=3.4.2 (строка: g++ -O2 -Wl,--stack=67108664)
C – C: компилируется cl.exe из пакета Microsoft Visual C/C++ .NET >=2005 или Microsoft Visual C/C++ 6.0 (строка: cl /O2), можно также компилировать gcc.exe из пакета MinGW >=3.4.2 (строка: gcc -O2 -Wl,--stack=67108664)
JAVA: компилируется javac.exe, строка запуска: java -Xmx256M -Xss64m -cp .
Когда жюри проверит решение, на вашем экране появится сообщение с результатом проверки.
Печать решений.
Участники могут печатать свои решения во время соревнований на сетевом принтере. Для печати решения необходимо использовать вкладку «printsol», выбрать входного файл и подтвердить посылку. Каждая команда имеет право напечатать до 30 страниц.
Пробный тур (знакомство с техникой).
Во время пробного тура участники знакомятся с компьютерами и проверяющим программным обеспечением. Для решения на пробном туре будут предложены 1-4 простые задачи.
Результаты пробного тура нигде учитываться не будут, однако нарушение правил на пробном туре может повлечь дисквалификацию команды на основной тур соревнований.