Правила проведения олимпиады по программированию

Материал из Кафедра АСОИУ
Перейти к: навигация, поиск

(приложение к Положению об организации и проведении олимпиады по программированию, см. Ссылки)

Содержание

Участники олимпиады

В олимпиаде могут принимать участие студенты ОмГТУ всех форм обучения и всех курсов, рекомендованные выпускающими кафедрами на основе предварительного конкурсного отбора. Олимпиада проводится в виде личного первенства.

Рекомендованные участники должны лично подтвердить своё намерение участвовать в олимпиаде и зарегистрироваться согласно объявленным оргкомитетом срокам и указаниям.

Техническое и программное обеспечение

Каждый участник получает в свое распоряжение один x86-совместимый компьютер конфигурации не хуже Intel Core 2 Duo, ОЗУ не менее 512 Мб, работающий под управлением операционной системы Microsoft Windows 2000, Windows XP, Windows 7 или Windows 8.

Составление исходных текстов решений и их отладка осуществляется участниками с использованием языков и сред программирования, перечисленных в таблице 1.

Таблица 1 – Используемые языки, компиляторы и среды программирования

Язык программирования Компилятор Среда программирования
C++ Microsoft Visual C++ 9.0 Microsoft Visual Studio 2008
C++ Microsoft Visual C++ 10.0 Optimized OpenMP Microsoft Visual Studio 2010
C++ MinGW32 Dev-C++
C# Microsoft .NET 4.0 Framework Microsoft Visual Studio 2008 и 2010
Java Java Development Kit v1.7 и v1.8 Eclipse; NetBeans
Pascal Free Pascal Compiler 2.6.0 Free Pascal 2.6.0

Для авторизованной проверки решений участников и составления рейтинга используется система «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» в ходе олимпиады, являются неофициальными. По окончанию олимпиады оргкомитет принимает решение о победителях, призёрах и отличившихся участниках мероприятия. Официальные результаты объявляются представителями оргкомитета по окончанию олимпиады на этапе награждения победителей (как правило, на следующий день).

Ссылки

Личные инструменты