Вы сейчас здесь: Главная страница > Статья
Олимпиада проводится по схеме Международного студенческого чемпионата мира по программированию (ACM ICPC).
Организация олимпиады
В организационный комитет олимпиады входят экспертная комиссия (далее жюри), методическая комиссия, технический комитет.
Председатель оргкомитета назначает председателя жюри, председателя методической комиссии и председателя технического комитета.
Жюри олимпиады обеспечивает проверку работ участников, составляет таблицу результатов олимпиады, определяет победителя и призёров. Жюри принимает окончательные решения о дисквалификации участников, нарушающих правила олимпиады. Жюри разбирает вопросы, возникшие в результате непредвиденных обстоятельств. Решения жюри окончательны и обжалованию не подлежат.
Методическая комиссия подготавливает комплект задач олимпиады. После олимпиады представители комиссии проводят разбор задач.
Технический комитет обеспечивает работоспособность программного и аппаратного обеспечения, доставляет участникам их распечатанные решения, следит за порядком на олимпиаде.
Допуск участников
Каждая команда состоит ровно из трёх учащихся 7-11 классов. При этом участники могут учиться в разных школах одного субъекта РФ. Команду может сопровождать тренер. В этом случае он является официальным контактным лицом команды и может защищать её интересы при общении с жюри.
Проведение олимпиады
Каждая команда получает в своё распоряжение один IBM PC совместимый компьютер, работающий под управлением операционной системы Windows. В случае непредвиденных обстоятельств, таких как неисправность локальной сети или отсутствие электропитания в компьютерном классе, участникам могут быть предоставлены другие компьютеры.
Олимпиада состоит из пробного и основного туров.
Пробный тур длится не более трёх часов. В ходе него участники могут ознакомиться с рабочими местами и предоставленным программным обеспечением, решив несколько простых задач. Во время пробного тура тренер может присутствовать на рабочем месте команды. Результаты пробного тура не учитываются при подведении итогов олимпиады.
Основной тур длится 5 часов. Жюри имеет право продлить тур в случае непредвиденных обстоятельств. Во время основного тура командам предлагается для решения от 8 до 13 задач с условиями на русском языке. Жюри принимает решения на языках программирования С, C++, Python3, Pascal, Java. Отправка решений осуществляется во время тура с помощью программного обеспечения олимпиады. Через некоторое время после отправки команде становится доступен результат проверки. После окончания тура решения не принимаются.
Для написания программ и их отладки участникам предоставляются следующие среды программирования: • FreePascal 2.4.0 или более поздние версии; • Code::Blocks 10.05 или более поздние версии; • Eclipse 3.6.0 или более поздние версии; • Lazarus 0.9.28.2 или более поздние версии; • Microsoft Visual C/C++ 2008 или более поздние версии; • Python 3.2 или более поздние версии;
Во время тура разрешается пользоваться любой литературой и личными записями. Запрещается использовать любую информацию в электронном виде, личные компьютеры или калькуляторы, мобильные средства связи.
Во время основного тура участники могут общаться только с членами своей команды и членами технического комитета. Команда не должна создавать излишнего шума, чтобы не мешать другим участникам. Команда может обратиться к жюри с вопросом по условию какой-либо задачи. Вопрос должен быть сформулирован на русском языке и предполагать ответ «Да» или «Нет». Вопрос задаётся с помощью программного обеспечения олимпиады. Жюри может ответить на поставленный вопрос «Да», «Нет» или «Без комментариев». Жюри может разослать ответ на вопрос всем участникам олимпиады.
Команда может распечатать своё решение на принтере. Необходимые средства для печати предоставляются программным обеспечением олимпиады. Распечатка будет доставлена команде представителем технического комитета. Количество листов бумаги на каждую команду ограничено.
Команды могут быть дисквалифицированы за несоблюдение данных правил, а также за совершение действий, которые могут нарушить работу программного обеспечения олимпиады. За нарушение правил во время пробного тура команда может быть отстранена от дальнейшего участия в олимпиаде.
Проверка решений
Решением задачи является файл с исходным текстом программы, написанной на одном из разрешённых языков программирования. Команда может решать задачи на различных языках программирования. Допустимый размер исходного текста одной программы с решением ограничен.
В решениях задач запрещается:
• создавать каталоги и временные файлы при работе программы;
• осуществлять чтение и запись векторов прерываний;
• использовать любые сетевые средства;
• совершать любые другие действия, нарушающие работу проверяющей системы.
Для проверки решений участников используется программная среда проведения соревнований. Компиляция решений в проверяющей системе осуществляется с помощью команды компиляции, соответствующей выбранному участником языку программирования.
Решения на сервере компилируются под операционной системой Linux с использованием следующих опций компилятора:
[C++ (gnu)]
/usr/bin/c++ -O2 -fno-stack-limit -x c++ {src} -o{src}.o
[C++11(gnu)] /usr/bin/c++ -O2 -fno-stack-limit -std=c++0x -x c++ {src} -o{src}.o
[C (gnu)] /usr/bin/c++ -O2 -fno-stack-limit -x c {src} -o{src}.o
[FPC (Delphi mode)] /usr/bin/fpc -Cs67107839 -Xt -O2 -Mdelphi {src} -o{src}.exe
[FPC] /usr/bin/fpc -Cs67107839 -Xt -O2 -Mfpc {src} -o{src}.exe
[Java]
javac -g:none -classpath %s.dir %s.dir/%s"
public class Main {} is required например:
public class Main
{
public static void main(String [] args)
// Write your code here
}
Решение проверяется путём последовательного запуска на наборе тестов, который недоступен участникам и является одинаковым для всех команд. Решение засчитывается в том случае, если оно выдаёт верные ответы на все тесты. Первыми тестами в наборе всегда являются тесты из условия задачи, они идут в том же порядке, в котором приведены в условии. Полный набор тестов не предоставляется участникам даже после окончания олимпиады. Тестирование производится автоматически, поэтому программы должны в точности соблюдать форматы входных и выходных данных, описанные в условии каждой задачи. Все входные данные предполагаются корректными и удовлетворяющими всем ограничениям, указанным в условии задачи.
Для каждой задачи определены максимальное время выполнения, объём доступной памяти. Если на одном из тестов программа превысила это время, выделила больше памяти, решение считается неверным.
После проверки команде сообщается о том, зачтено решение или нет. Если решение не зачтено, сообщается информация о первой случившейся ошибке: тип ошибки и номер теста, на котором она произошла (тесты нумеруются, начиная с единицы). В этом случае решение не проверяется на последующих тестах. Сообщение от проверяющей системы может быть одним из следующих:
сообщение
расшифровка
возможная причина
Accepted
решение засчитано
программа работает верно
Compilation error
компиляция программы завершилась с ошибкой
синтаксическая ошибка; неправильно указан язык; размер исходного файла слишком большой
Wrong answer N
ответ программы неверен
ошибка в программе; неверный алгоритм
Runtime error N
программа завершила работу аварийно или с ненулевым кодом возврата работу
программа на языке С не завершается оператором return 0; деление на ноль; бесконечная рекурсия; массивы имеют недостаточный размер
Presentation error N
Неверный формат вывода
формат выводимых данных не соответствует условию задачи
Time limit exceeded N
программа не закончила работу в установленное время
бесконечный цикл; неэффективное решение
Memory limit exceeded N
программа превысила установленное ограничение по памяти
утечка памяти; неэффективное решение
Output limit exceeded N
программа превысила ограничение на размер выходных данных
бесконечный цикл с выводом большого количества данных; ошибка в программе
Real time limit exceeded N
программа не использует процессорное время в течении длительного промежутка
ввод с клавиатуры; ошибка в программе
Pending Check
система получила ваше решение и оно находится в очереди на проверку
Running
система начала проверять ваше решение, через некоторое время вы узнаете вердикт
При получении вердикта "Compilation error" программа не запускается ни на одном тесте.
Результаты
Команды ранжируются по числу зачтённых задач. При равенстве числа решённых задач выше ставится команда, имеющая меньшее суммарное штрафное время.
Суммарное штрафное время определяется как сумма штрафных времён каждой зачтённой задачи. Штрафное время отдельной задачи определяется как время от начала тура до момента посылки первого решения, признанного правильным, плюс 20 минут за каждую предыдущую посылку решения на эту задачу. Нерешённые задачи никакого вклада в суммарное штрафное время не вносят (в том числе и в виде штрафов за неправильные решения).
Во время тура командам доступна таблица с текущими результатами. За час до конца тура таблица замораживается. Все промежуточные результаты являются неофициальными. Официальные результаты объявляются на закрытии олимпиады.