Олимпиады по информатике. Санкт-Петербург, Россия

Правила Семнадцатой Всероссийской командной олимпиады школьников по программированию

Общая часть

  • Всероссийская командная олимпиада школьников по программированию проводится Министерством образования Российской Федерации, Комитетом по образованию администрации Санкт-Петербурга, Санкт-Петербургским национальным исследовательским университетом информационных технологий, механики и оптики, Алтайским Государственным Техническим Университетом.
  • Основными целями и задачами олимпиады являются пропаганда научных знаний и развитие у школьников интереса к научной деятельности, активизация работы спецкурсов, кружков, научных обществ учащихся, развития других форм работы со школьниками, создание оптимальных условий для выявления одаренных и талантливых школьников, их дальнейшего интеллектуального развития и профессиональной ориентации, развитие умения работать в коллективе.

Порядок организации и проведения олимпиады

  • Олимпиада проводится в один компьютерный тур. На туре команде предоставляется персональный компьютер и предлагается решить несколько задач. Продолжительность тура — 5 часов. Жюри может продлить время тура в случае каких-либо непредвиденных обстоятельств.
  • В олимпиаде принимают участие команды, каждая из которых составлена из трех школьников.
  • Участникам предоставляются современные компьютеры с установленной операционной системой семейства Windows.
  • Для решения задач участники могут использовать следующие языки программирования и соответствующие им среды разработки:
    • Pascal: Borland Delphi, Free Pascal;
    • C/C++/C++11: Visual C++ Express Edition, GNU C++ (MinGW), Code::Blocks;
    • C#: Visual C# Express Edition;
    • Java: Sun JDK, Eclipse, IntelliJ IDEA.
    • Python: Python, Wing IDE 101, PyCharm.
    • D: DMD.
  • Жюри оставляет за собой право установить последние версии компиляторов и дополнительные среды разработки.
  • Все среды разработки будут полностью установлены на каждом компьютере, включая встроенные системы помощи и примеры. Запрещается использовать какие-либо другие компиляторы и библиотеки.
  • Во время тура разрешается пользоваться любой литературой и личными записями. Запрещается использовать любую информацию в электронном виде, личные компьютеры или калькуляторы, мобильные средства связи.
  • Во время тура участники решают предложенные задачи. Решением задачи является программа, составленная на одном из допустимых языков программирования. Программа не должна содержать вспомогательных модулей или файлов. Разные задачи можно решать на разных языках программирования.
  • На туре участникам предлагаются обычные и интерактивные задачи.
  • Обычные задачи предполагают, что входные данные необходимо считывать со стандартного потока ввода, а выходные данные необходимо выводить на стандартный поток вывода. Программа не должна работать с файлами.
  • Решения интерактивных задачи через стандартные потоки ввода и вывода взаимодействуют с программой жюри.
  • Проверка решений производится во время соревнований. С помощью специальной программы команды посылают свои решения жюри. Жюри компилирует программы, используя компиляторы командной строки, и проверяет их. Участники должны поместить все директивы компилятора в файлы решений.
  • По мере готовности своих решений команда посылает их жюри для проверки. После этого команда может продолжать работу над другими задачами. После того, как жюри проверит решение (проверка занимает около 1-5 минут), команда получает сообщение с результатами тестирования. Это сообщение показывается на экране. Если не возникло ошибки компиляции, то в нем сообщается, что задача зачтена, либо сообщение с указанием ошибки на первом из не пройденных тестов.
  • Возможные типы сообщений:
    РезультатНомер тестаКомментарийВозможные причины
    Compilation errorNoВ результате компиляции программы не создан исполняемый файл.
    • Синтаксическая ошибка в программе;
    • При отправке на проверку выбран неверный язык программирования.
    Time limit exceededYesПрограмма не завершилась за отведенный период времени.
    • Неэффективное решение;
    • Ошибка в программе.
    Memory limit exceededYesПрограмма попыталась использовать больше памяти, чем разрешается.
    • Неэффективное решение;
    • Ошибка в программе.
    Idleness limit exceededYesПрограмма не использует процессорное время в течении длительного промежутка.
    • В интерактивных задачах - отсутствие flush для вывода, ожидание ввода пока вывод все еще находится в буфере;
    • В интерактивных задачах - нарушение протокола взаимодействие, ошибочное ожидание ввода;
    • Ошибка в программе.
    Security ViolationYesПрограмма попыталась предпринять действия, запрещенные правилами.
    • Ошибка в программе;
    • Намеренное нарушение правил (в этом случае команда будет дисквалифицирована).
    Runtime errorYesПрограмма завершилась с ненулевым кодом возврата, либо создала исключительную ситуацию (exception) и не обработала ее.
    • Ошибка времени исполнения;
    • В конце программы на C/C++ нет оператора 'return 0';
    • 'return (не 0)' в программе на С/С++;
    • 'halt(не 0)' в программе на паскале;
    • 'System.exit(non-zero)' в программе на Java;
    • Необработанная исключительная ситуация.
    Presentation errorYesПрограмма проверки не может проверить выходные данные, т.к. их формат не соответствует описанному.
    • Неверный формат вывода;
    • Выходной файл имеет неправильное имя, или отсутствует.
    Wrong answerYesОтвет неверен.
    • Неверный алгоритм решения.
    AcceptedNoРешение принято жюри.
    • Решение правильное.
  • Решения участников проверяются на заранее подготовленном жюри наборе тестов. Решение принимается жюри, если оно прошло все тесты. Частичные решения (прошедшие не все тесты) не оцениваются.
  • Время тестирования и решения и доступная память на каждом тесте ограничены. Решения, превысившие установленное ограничение, считаются неэффективными для данной задачи. В этом случае тест считается не пройденным, а решение, как следствие, неверным. Жюри указывает ограничения на время работы программы на одном тесте и на размер доступной памяти в формулировках задач.
  • В решениях задач запрещено использовать:
    • чтение и запись векторов прерываний;
    • создание подкаталогов;
    • любой ввод/вывод кроме чтения со стандартного потока ввода и записи в стандартный поток вывода;
    • любое использование сетевых средств;
    • любые другие средства или действия, которые могут нарушить процесс проверки и прохождения первенства.
  • Решение должно выдавать одинаковые ответы на одинаковые тесты, не зависимо от времени запуска и программного окружения. Жюри вправе произвести неограниченное количество повторных тестирований программы участника и выбрать наихудший результат по каждому из тестов.
  • Во время тура участники могут общаться только с членами своей команды и представителями жюри.
  • За нарушение правил олимпиады команда может быть дисквалифицирована.
  • Апелляция не проводится.
  • Жюри обладает исключительным правом определения правильности прохождения тестов, выставления оценок, определения победителей и дисквалификации участников. Жюри разбирает вопросы, возникающие в результате непредвиденных событий и обстоятельств. Решения жюри окончательны и обжалованию не подлежат.

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

  • Выше оказывается классифицирована команда, решившая большее количество задач.
  • При равенстве количества решенных задач выше оказывается классифицирована команда, у которой меньше суммарное штрафное время. Штрафное время вычисляется следующим образом: для решенных задач, штрафное время представляет собой время в минутах, прошедшее с начало тура до сдачи задачи, плюс 20 штрафных минут за каждую неудачную попытку сдать задачу. За нерешенные задачи штрафное время не начисляется.