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

Правила Тридцатого командного чемпионата школьников Санкт-Петербурга по программированию

1. Общая часть

  1. Тридцать первый командный чемпионат школьников Санкт-Петербурга по программированию проводится 4 ноября 2023 года.
  2. Основными целями и задачами олимпиады являются пропаганда научных знаний и развитие у школьников интереса к научной деятельности, активизация работы спецкурсов, кружков, научных обществ учащихся, развития других форм работы со школьниками, создание оптимальных условий для выявления одаренных и талантливых школьников, их дальнейшего интеллектуального развития и профессиональной ориентации, развитие умения работать в коллективе.
  3. Тридцать первый командный чемпионат школьников Санкт-Петербурга по программированию является отборочной региональной олимпиадой для Двадцать четвертой всероссийской командной олимпиады школьников по программированию.

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

  1. Олимпиада проводится в один компьютерный тур. На туре команде предоставляется персональный компьютер и предлагается решить несколько задач. Продолжительность тура - 5 часов. Жюри может продлить время тура в случае каких-либо непредвиденных обстоятельств.
  2. Участникам предоставляются современные компьютеры с установленной операционной системой семейства Windows.
  3. Для решения задач участники могут использовать следующие языки программирования и соответствующие им среды разработки:
    • Pascal: Borland Delphi, Free Pascal, Pascal ABC;
    • C/C++17: Visual C++ Express Edition, GNU C++, Code::Blocks;
    • C#: Visual C# Express Edition;
    • Java: Sun JDK, Eclipse.
    • Python: Python 3, Wing IDE 101.
    • D: DMD.
    • Kotlin.
  4. Жюри оставляет за собой право установить последние версии компиляторов и дополнительные среды разработки.
  5. Все среды разработки будут полностью установлены на каждом компьютере, включая встроенные системы помощи и примеры. Запрещается использовать какие-либо другие компиляторы и библиотеки.
  6. Во время тура разрешается пользоваться любой литературой и личными записями. Запрещается использовать любую информацию в электронном виде, личные компьютеры или калькуляторы, мобильные средства связи.
  7. Во время тура участники решают предложенные задачи. Решением задачи является программа, составленная на одном из допустимых языков программирования. Программа не должна содержать вспомогательных модулей или файлов. Разные задачи можно решать на разных языках программирования.
  8. Все задачи предполагают, что входные данные расположены в одном или нескольких входных файлах, чьи имена определены в тексте задачи. Программа должна формировать выходной файл (или несколько файлов) с заданными именами. Все входные и выходные файлы располагаются в текущей директории.
  9. Проверка решений производится во время соревнований. С помощью специальной программы команды посылают свои решения жюри. Жюри компилирует программы, используя компиляторы командной строки, и проверяет их. Участники должны поместить все директивы компилятора в файлы решений.
  10. По мере готовности своих решений команда посылает их жюри для проверки. После этого команда может продолжать работу над другими задачами. После того, как жюри проверит решение (проверка занимает около 1-5 минут), команда получает сообщение с результатами тестирования. Это сообщение показывается на экране. Если не возникло ошибки компиляции, то в нем сообщается, что задача зачтена, либо сообщение с указанием ошибки на первом из не пройденных тестов.
  11. Возможные типы сообщений:
    РезультатНомер тестаКомментарийВозможные причины
    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;
    • Необработанная исключительная ситуация.
    Wrong answerYesОтвет неверен.
    • Ошибка в программе;
    • Неверный алгоритм решения;
    • Неверный формат вывода.
    AcceptedNoРешение принято жюри.
    • Решение правильное.
  12. Решения участников проверяются на заранее подготовленном жюри наборе тестов. Решение принимается жюри, если оно прошло все тесты. Частичные решения (прошедшие не все тесты) не оцениваются.
  13. Время тестирования и решения и доступная память на каждом тесте ограничены. Решения, превысившие установленное ограничение, считаются неэффективными для данной задачи. В этом случае тест считается не пройденным, а решение, как следствие, неверным. Жюри указывает ограничения на время работы программы на одном тесте и на размер доступной памяти в формулировках задач.
  14. В решениях задач запрещено использовать:
    • создание подкаталогов;
    • любой ввод/вывод кроме открытия, закрытия, чтения и записи файлов, указанных в условии задачи;
    • любое использование сетевых средств;
    • любые другие средства или действия, которые могут нарушить процесс проверки и прохождения первенства.
  15. Решение должно выдавать одинаковые ответы на одинаковые тесты, не зависимо от времени запуска и программного окружения. Жюри вправе произвести неограниченное количество повторных тестирований программы участника и выбрать наихудший результат по каждому из тестов.
  16. Во время тура участники могут общаться только с членами своей команды и представителями жюри.
  17. За нарушение правил олимпиады команда может быть дисквалифицирована.
  18. Апелляция не проводится.
  19. Жюри обладает исключительным правом определения правильности прохождения тестов, выставления оценок, определения победителей и дисквалификации участников. Жюри разбирает вопросы, возникающие в результате непредвиденных событий и обстоятельств. Решения жюри окончательны и обжалованию не подлежат.

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

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