Раздел «Алгоритмы».OlimpRules:

Правила олимпиды по программированию НИКС

На олимпиаде участнику предоставляется персональный компьютер и предлагается решить несколько задач.

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

На основном туре участникам будет предложено 6-8 задач. Продолжительность тура 5 часов. Жюри может продлить время тура в случае каких-либо непредвиденных обстоятельств.

Для решения задач участники могут использовать следующие языки программирования и соответствующие им системы разработки:

cистема компилятор
Microsoft Visual C++ 6.0 нет
Dev C++ gcc
Borland C++ Borland C++
Free Pascal fpc
Borland Pascal Borland Pascal
Active Perl perl
Java Java

Во время тура разрешается пользоваться любой литературой и личными записями. Категорически запрещается пользоваться любыми носителями информации в электронном виде (дискетами, CD и DVD дисками, USB flash drive'ами и др.), электронными устройствами (калькуляторами, электронными записными книжками, собственными компьютерами) и средствами связи (мобильные телефоны, пейджеры), общаться с руководителями команд и другими участниками.

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

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

Кроме того, в некоторых задачах ввод и вывод может осуществляться через консоль.

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

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

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

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

После проверки участникам сообщается количество прошедших тестов, количество набранных баллов на текущей попытке, результат по задаче:

Тип сообщения Описание Возможная причина
OK Задача прошла все тесты Решение правильное
Partial Solution Частичное решение: не прошли некоторые тесты См. следующую таблицу
Compilation Error В результате компиляции не создан исполняемый файл Синтаксическая ошибка в программе. Указан неверный язык программирования (например C для программы на C++)

Также после проверки будет доступен просмотр более подробной информации, где сообщается результат проверки по каждому тесту:

Тип сообщения Описание Возможная причина
OK Тест пройден Программа на этом тесте работает верно.
Wrong Answer Ответ не верен Ошибка в программе. Неверный алгоритм решения.
Presentation Error Программа проверки не может проверить выходные данные, т.к. их формат не соответствует описанному в условии Неверный формат вывода. Выходной файл имеет неправильное имя, или отсутствует. Программа не печатает результат. В выходной файл выдается лишняя информация. Программа не закрывает выходной файл.
Time Limit Exceeded Программа превысила установленный в условии предел времени. Неэффективное решение. Ошибка в программе.
Runtime Error Ошибка выполнения. Программа вышла с ненулевым кодом завершения либо произошел аварийный выход программы (crash). В этом случае результат работы программы не проверяется. Программа на языке C/C++ не завершается оператором 'return 0'. Ненулевой код возврата указан в программе. Программа превысила установленный в условии предел памяти.

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

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

В решениях задач запрещено

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

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

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

Система оценки

Решение задачи проверяется на заранее подготовленном жюри наборе тестов, одинаковом для всех участников. Каждый тест оценивается некоторым количеством баллов. Дополнительные баллы (от 10 до 15 в зависимости от задачи) участник получает, если ее решение проходит все тесты. Каждая задача оценивается суммарно 50 баллами. За каждую дополнительную попытку сдачи задачи вычитается 2 балла. При этом результат участника по задаче (баллы, которые получает команда за задачу) равен максимуму из всех попыток команды по этой задаче. Например, если после первой попытки команда получила 16 баллов, то результат равен 16. Если после второй попытки решение набрало лишь 10 баллов, то результат по-прежнему 16. Пусть после третьей попытки решение набрало 26 баллов, тогда результат команды 22, так как 4 балла вычитается за предыдущие попытки. Если после четвертой попытки решение пройдет все тесты, то результат будет равен 44: из 50 баллов вычитаются по 2 балла за каждую из трех дополнительных попыток.

Участники ранжируются по сумме баллов за все задачи.