Правила проведения олимпиады по программированию
Материал из Кафедра АСОИУ.
(приложение к Положению об организации и проведении олимпиады по программированию, см. Ссылки)
Содержание |
Участники олимпиады
В олимпиаде могут принимать участие студенты ОмГТУ всех форм обучения и всех курсов, рекомендованные выпускающими кафедрами на основе предварительного конкурсного отбора. Олимпиада проводится в виде личного первенства.
Рекомендованные участники должны лично подтвердить своё намерение участвовать в олимпиаде и зарегистрироваться согласно объявленным оргкомитетом срокам и указаниям.
Техническое и программное обеспечение
Каждый участник получает в свое распоряжение один x86-совместимый компьютер конфигурации не хуже Intel Pentium III, ОЗУ не менее 256 Мб, работающий под управлением операционной системы Microsoft Windows 2000, Windows XP, Windows Vista или Windows 7.
Составление исходных текстов решений и их отладка осуществляется участниками с использованием языков и сред программирования, перечисленных в таблице 1.
Таблица 1 – Используемые языки, компиляторы и среды программирования
| Язык программирования | Компилятор | Среда программирования |
|---|---|---|
| Pascal | Free Pascal 2.2.0 | Free Pascal 2.2.0 |
| Java | Java Development Kit 1.6 | Eclipse 3.4.1; NetBeans 6.4 |
| C++ | Microsoft Visual C++ 9.0 | Microsoft Visual Studio 2008 Express |
| C# | Microsoft .NET 3.5 Framework | Microsoft Visual Studio 2008 Express |
| VB .NET | Microsoft .NET 3.5 Framework | Microsoft Visual Studio 2008 Express |
Для авторизованной проверки решений участников и составления рейтинга используется система «Contester».
Тренировочная сессия
Накануне олимпиады проводится тренировочная сессия, в ходе которой участники могут ознакомиться с рабочими местами, программным обеспечением и правилами олимпиады. На тренировочную сессию допускаются только зарегистрированные участники, которым предлагается решить одну или несколько упрощённых задач с целью апробации программного обеспечения.
Основной тур олимпиады
Продолжительность основного тура олимпиады составляет 4 часа. Жюри имеет право продлить олимпиаду в случае каких-либо непредвиденных обстоятельств.
Непосредственно перед началом основного тура участник получает пароль для доступа к системе «Contester», который он может сменить в любой момент. После авторизации открывается доступ к условиям задач олимпиады. Количество задач – от 6 до 12. Условия задач приведены на русском языке. Решением задачи является программа (файл с исходным текстом), написанная на одном из разрешенных языков программирования (см. таблицу 1). Для разных задач можно использовать разные языки программирования. Поле ввода исходного кода решения (или имени файла с решением) находится под условием задачи, и ниже располагается протокол попыток решения этой задачи участником. Процедура проверки описана далее в разделе «Проверка решений».
Для каждой задачи указывается формат входных данных, которые программа участника должна считать из файла input.txt, либо со стандартного устройства ввода (консоли), и формат выходных данных (результат решения), которые программа должна выдать на стандартное устройство вывода (консоль). Если не оговорено отдельно, следует предполагать, что все входные данные являются корректными и удовлетворяют всем ограничениям, указанным в условии задачи (например, если даны три стороны треугольника, не нужно проверять, может ли существовать треугольник с такими сторонами).
«Contester» позволяет наблюдать промежуточный рейтинг олимпиады (ссылка «Турнирная таблица»). Однако, как показывает практика, многим участникам это оказывает «медвежью услугу»: место в рейтинге растёт только в момент удачного решения задачи, а в остальное время рейтинг только падает, что психологически тяжело наблюдать. Поэтому изменения турнирной таблицы будут доступны участникам только в первый час олимпиады. Формула рейтинга описана ниже в разделе «Определение победителей».
Система «Contester» является русскоязычной и снабжена необходимой справкой по её использованию. В справке также имеются образцы оформления кода на языках C++, Pascal, Java, C#, J# и Visual Basic .NET.
Участники могут приносить с собой и использовать любые источники информации на бумажном носителе: книги, справочники, листинги программ и т.п.
Участникам запрещается:
- использовать любые электронные средства хранения или передачи информации: калькуляторы, сотовые телефоны, портативные компьютеры и другие;
- передавать кому-либо свой пароль;
- общаться друг с другом;
- выполнять на компьютерах действия, не связанные с решением задач олимпиады.
Во время олимпиады члены жюри присутствуют в компьютерных аудиториях и контролируют ход олимпиады. Участники имеют возможность обратиться к членам жюри с уточняющими вопросами, касающимися условий задач и предполагающими ответ «Да» или «Нет». Обратиться можно напрямую, либо посредством форумов системы «Contester» (ссылки «Обсудить» напротив названия каждой задачи в списке задач турнира). Использовать форумы для общения участников между собой не разрешается.
За нарушение правил участия в олимпиаде участник может быть отстранён от участия с аннулированием достигнутых результатов.
Проверка решений
Проверка представленных решений проводится системой «Contester» автоматически. Сервер предпринимает попытку откомпилировать исходный код и получить исполняемый код программы. Если это удаётся, решение проверяется на наборе тестов (входных данных и правильных ответов), одинаковых для каждой проверки. Тестовые данные участникам недоступны. Решение засчитывается в том случае, если оно выдает верные ответы на все тесты. Программа должна в точности соблюдать форматы входных и выходных данных, описанные в условии задачи.
Кроме этого в условии каждой задачи указывается максимальное время выполнения для одного теста и максимальный объем памяти, допустимый для использования программой (в зависимости от используемого языка). Если на одном из тестов программа превысила максимальное время выполнения и/или максимальный объём памяти, решение считается неверным. Пределы времени и памяти в системе «Contester» указываются над условием задачи виде «Лимит времени A/B/C/D мс. Лимит памяти L/M/N/K Кб», где A мс и L Кб – пределы для программ на C++ и Pascal, далее следуют пределы для Java, затем для платформы .NET и последние – для всех остальных.
После отправки решения на проверку, участник сразу же может видеть статус или результат проверки. Варианты сообщений системы представлены в таблице 2. Если возникла ошибка компиляции (Compilation Error), участнику становится доступен журнал компиляции (лог) с подробностями ошибки. В случае неверного ответа (Wrong Answer) сообщается номер теста, на котором произошла ошибка.
Таблица 2
| Сообщение | Значение и возможные причины |
|---|---|
| Accepted! | • Решение удачно скомпилировано и прошло все тесты. |
| Compilation Error | • Решение содержит синтаксическую ошибку. • Файл не сохранён в среде разработки или на проверку отправлен ошибочный файл. • Выбран неверный язык программирования. |
| Wrong Answer | • Решение вывело неверный ответ в указанном тесте. • Файл не сохранён в среде разработки или на проверку отправлен ошибочный файл. • Решение содержит неинициализированные переменные. • Используется значение итерационной переменной после цикла for. |
| Presentation Error | • Решение вывело данные не в требуемом формате, не вывело данные целиком или вывело лишние данные. • Файл не сохранён в среде разработки или на проверку отправлен ошибочный файл. • Решение содержит неинициализированные переменные. • Используется значение итерационной переменной после цикла for. • Решение выводит данные в файл (а должно в консоль). • Если решение на Delphi, возможно отсутствует строка uses SysUtils; |
| Runtime Error | • При проверке произошла runtime-ошибка (исключение). • Решение содержит работу с файлами (кроме input.txt). |
| Time Limit | • Программа ждет нажатия клавиши. • На указанном тесте решение работало дольше, чем указано в условии. • На указанном тесте решение "зависло". |
| Memory Limit | • На указанном тесте решение использовало больше памяти, чем указано в условии. |
| Security Violation | • Решение содержит вызовы запрещённых функций (попытка создания файлов, записи в реестр и т.д.). |
| Waiting | • Решение ожидает очереди на проверку. Сервер занят другими решениями. |
| Checking | • Решение в данный момент проверяется сервером. |
Одну задачу можно пытаться сдать неограниченное число раз, но при этом за каждую неудачную попытку дополнительно начисляются 20 штрафных минут (см. «Определение победителей» далее).
В исходном коде решения запрещается:
- вывод в стандартный поток ошибок;
- использование ассемблерных вставок;
- вызов прерываний и прочие низкоуровневые операции;
- использование WinAPI, в том числе для чтения и записи файлов;
- доступ к любым другим файлам, кроме чтения input.txt;
- запуск других программ.
Определение победителей
Участники ранжируются по числу полностью решенных (т.е. прошедших все тесты и засчитанных) задач. Участники, решившие одинаковое число задач, ранжируются по суммарному времени решения. Время решения отдельной задачи фиксируется в момент сдачи правильного решения, отсчитывается от начала турнира и включает в себя по 20 дополнительных штрафных минут за каждую попытку сдать неверное решение.
Полную и окончательную ответственность за проверку представляемых решений несет жюри. Все промежуточные результаты, представленные в системе «Contester» в ходе олимпиады, являются неофициальными. По окончанию олимпиады оргкомитет принимает решение о победителях, призёрах и отличившихся участниках мероприятия. Официальные результаты объявляются представителями оргкомитета по окончанию олимпиады на этапе награждения победителей (как правило, на следующий день).
Ссылки
- olymp.acouy.ru - олимпиады на базе кафедры АСОИУ ОмГТУ
- Положение о проведении региональной олимпиады по программированию на базе ОмГТУ
- Contester - система для проведения тренировок и турниров по программированию

