mail

Правила XII Открытого чемпионата БГУИР

1. АППАРАТНОЕ И ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

1.1. Тестирующая система

Intel(R) Xeon(R) CPU E5-2630 @ 2.20GHz, 15MB cache, virtualizаtion on 8 core, 8GB RAM, OS Linux. Доступные компиляторы:

  • C11 (gcc-12.2.1)
  • C++17 (gcc-12.2.1)
  • C++20 (gcc-12.2.1)
  • Go (go-1.19.5)
  • Pascal (fpc-3.2.2)
  • Python3 (pypy-7.3.9)
  • Python3 (python-3.10.10)
  • Rust (rustc-1.64.0)
  • Java (openjdk-19.0.2)
  • C# (mono-6.12.0)

1.2. Рабочие места

Во время очных туров соревнований предоставляется подсоединенный к интернет сети IBM PC-совместимый компьютер в следующей конфигурации: процессор Pentium или совместимый, ОЗУ не менее 2 Gb, операционная система Microsoft Windows и сопутствующее программное обеспечение.

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

2. ПОРЯДОК ПРОВЕДЕНИЯ

Участниками соревнований являются учащиеся средних общеобразовательных учреждений Республики Беларусь, учащиеся учреждений среднего специального образования, студенты (I и II ступень), аспиранты учреждений высшего образования Республики Беларусь и других стран.

Команда может состоять не более чем из 3 участников. Участнику соревнований запрещается входить в состав более чем одной команды. Команда, в состав которой входит хотя бы один студент, магистрант или аспирант вуза или ссуза, считается студенческой командой. Команда, в состав которой входят участники не из одного учебного заведения, кроме учебных заведений основного и среднего общего образования, считается смешанной и в очном финале официальное участие не принимают. Не полная команда, состоящая менее чем из 2 участников в очном финале официальное участие не принимают.

Чемпионат по программированию проводится по правилам ICPC и состоит из трех туров. Во время всех туров чемпионата запрещается обсуждать идеи и обмениваться решениями задач вне команды.

2.1. Первый отборочный тур (четвертьфинал)

Первый отборочный тур проводится в заочной форме. Командам-участницам предлагается решить от 12 до 15 задач (текст задач на русском языке) за 133 часов (5 дней 13 часов). Жюри имеет право продлить соревнования в случае каких-либо непредвиденных обстоятельств. Для прохождения на следующий этап участникам необходимо решить не менее половины задач.

Команды, чьи решения имеют НЕСОМНЕННЫЕ ПРИЗНАКИ «СПИСЫВАНИЯ» ИСХОДНОГО ТЕКСТА программы, при подведении итогов тура будут дисквалифицированы. В случае особенно явных нарушений участники, отославшие такие решения, также могут быть дисквалифицированы для участия в чемпионате на следующий год.

Первый отборочный тур является обязательным для команд БГУИР и школьных команд. Команды других вузов и ссузов Республики Беларусь и стран зарубежья приглашаются для участия сразу во втором отборочном туре соревнования (полуфинале), однако также могут принимать участие в четвертьфинале.

2.2. Второй отборочный тур (полуфинал)

Второй отборочный тур (полуфинал) проводится в очно-заочной форме. Командам-участницам предлагается решить от 4 до 12 задач (текст задач на русском и английском языках) за 4-5 астрономических часов. Жюри имеет право продлить соревнования в случае каких-либо непредвиденных обстоятельств.

Команды БГУИР участвуют в туре очно на базе университета. Команды не из БГУИР решают тур заочно в своих учреждениях образования. Для участия на своей площадке участникам в категории "Students" необходимо использование системы прокторинга. Необходима синхронная запись экрана устройства (не конкретного приложения), которым будет пользоваться команда во время тура и запись рабочего места с лицами участников на котором находится компьютер. Запись должна быть достаточно информативна, чтобы организационный комитет убедился в соблюдении правил чемпионата. Также за соблюдение правил соревнований отвечает тренер команды. Участники других учреждений образования, изъявившие желание участвовать в полуфинале на базе БГУИР, должны заранее сообщить организаторам об этом.

В следующий этап (финал) проходят 30 команд, показавшие лучшие результаты на данном этапе, но не более:

  • 7 команд студентов, магистрантов и аспирантов БГУИР;
  • 2 команд от каждого вуза или ссуза Республики Беларусь и стран зарубежья;
Для команд из средних общеобразовательных учреждений проводится отдельный финал, в который приглашается не менее 15 и не более 25 команд и не более одной команды от каждого учреждения образования. Решение об участии в школьном финале команд, участники которых являются представителями разных учреждений образования, принимается организационным комитетом в индивидуальном порядке.

2.3. Финал чемпионата

Финал соревнований проводится в очной форме. Участникам предлагается решить от 6 до 12 алгоритмических задач (тексты задач на английском языке) за 5 астрономических часов.

2.4. Прочие условия

Второй отборочный тур (полуфинал) является обязательным для всех зарегистрированных команд, желающих принять участие в чемпионате.

Команды высших учебных заведений, в состав которых входит не менее двух финалистов студенческого командного чемпионата мира по программированию ICPC сезона 2023-2024, а также команды средних общеобразовательных учреждений (школ, гимназий, лицеев), в состав которых входит не менее двух призеров заключительного этапа республиканской олимпиады по информатике 2024 года (диплом 1, 2 и 3 степени), допускаются к участию в финале соревнований без прохождения отборочных этапов и сверх установленной квоты для учебного заведения.

Во время второго отборочного тура (полуфинала) и финала соревнований каждой команде предоставляется один компьютер.

Участники могут приносить с собой и использовать словари (англо-русский и т.п.), чистые листы бумаги и инструменты для письма. Запрещается использовать любые (кроме предоставленных жюри) книги, распечатки, электронные средства хранения и передачи информации: личные компьютеры, флешки, дискеты, калькуляторы, мобильные телефоны и др.

По решению оргкомитета и жюри количество команд, которое проходит в следующий этап, их состав, а также квота могут быть изменены.

Во время очных туров команды могут использовать сетевой принтер для печати своих решений. Доставку распечаток осуществляют представители организаторов.

В течение очных туров участники могут общаться только с членами своей команды, представителями жюри и оргкомитета соревнований.

3. РЕШЕНИЕ ЗАДАЧ

Во время тура участники решают предложенные задачи. Решением является программа (исходный текст). Программа не должна включать в себя другие файлы или модули кроме стандартных.

Проверка представленных решений проводится во время соревнований. Участники посылают решения в тестирующую систему с помощью предоставленного программного обеспечения. Решение проверяется путем запуска на наборе тестов, который недоступен участникам и является одинаковым для всех участников. Решение засчитывается в том случае, если оно выдает верные ответы на все тесты. В противном случае, участники могут делать повторные попытки (их количество не ограничено).

Ввод и вывод осуществляется через стандартные потоки (stdin, stdout), если не сказано иное. Тестирование производится автоматически, поэтому программы должны в точности соблюдать форматы ввода-вывода, описанные в условии каждой задачи. Если не оговорено отдельно, все входные данные предполагаются корректными и удовлетворяющими всем ограничениям, указанным в условии.

Для каждой из задач указывается максимальное время выполнения одного теста. Если на одном из тестов программа превысила это время, решение считается неверным.

В решениях задач запрещено использовать:

  1. Работу с подкаталогами и файлами.
  2. Любые сетевые средства.
  3. Любые другие средства или действия, которые могут нарушить работу программного обеспечения олимпиады (в том числе использование вставок ассемблерного кода).

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

По мере готовности участники посылают свои решения в тестирующую систему для проверки. После этого они могут продолжать работу над другими задачами. После того как тестирующая система проверит решение, они получают сообщение о результатах тестирования. Это сообщение появится на экране (в окне программы-клиента проверяющей системы). Участнику сообщается, зачтено ли решение или нет. Если решение не зачтено, сообщается тип ошибки и номер теста, на котором эта ошибка произошла.

В случае сообщения “Compilation error” можно будет просмотреть протокол компиляции. Номер теста при таком сообщении указываться не будет.

Все тесты выполняются в одном и том же порядке. Номер ошибочного теста, указываемый в результатах проверки, есть номер первого теста, на котором задача не прошла проверку. Например, если система сообщила: «Time-limit exceeded: Test 9» («Превышен предел времени на тесте № 9»), это означает, что:

  • тесты с 1 по 8 прошли проверку;
  • на более сложном, чем предыдущие восемь, девятом тесте программа превысила предел времени.

Если получено сообщение «Presentation error» («Ошибка вывода»), то это означает, что формат результата (вывода) программы отличается от требуемого.

Сообщение «Run-time error» означает ошибку времени выполнения (аварийное завершение программы). Сообщение «Wrong answer» означает неправильный ответ.

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

Во время соревнований участники могут задавать вопросы по условиям задач. Вопрос должен быть составлен в форме, предполагающей ответы «ДА» («Yes») или «НЕТ» («No»). Если вопрос поставлен некорректно или ответ прямо следует из условия задачи, жюри отвечает «Без комментариев» («No comments»). Если жюри согласно, что в условии присутствует неясность или ошибка, то всем участникам делается соответствующее объявление.

Выигрывает команда, правильно решившая наибольшее число задач. В случае равенства числа решенных задач, выигрывает команда, у которой меньше штрафных очков. Штрафные очки начисляются отдельно за каждую успешно решенную задачу и суммируются. Для каждой задачи число штрафных очков равно времени от начала соревнований до ее успешного решения (в минутах) с добавлением по 20 минут за каждую неудачную попытку. Каждая попытка сдать задачу ПОСЛЕ того, как решение для данной задачи уже было зачтено, может быть воспринята как «неудачная попытка» и привести к дополнительному штрафному времени.

Во время соревнований участники могут просматривать текущие результаты всех команд на своих компьютерах. В очных турах таблица результатов «замораживается» за час до окончания соревнования: у команд есть возможность видеть вердикты по своим посылкам и наличие посылок по задачам других команд без указания, была эта попытка успешной или нет. Пример таблицы результатов:

Place User A B C D E F Total Penalty
1 kegbl + + +1 +5 + + 6 370
2 K5 + + +1 +5 +2 + 6 667
3 abra + +3 +1 +1 +3 + 6 876
4 K4 + +3 +3 +2 +1 5 788
5 LGS + + +1 +2 +3 5 6184
6 4lulz +1 + +4 +3 +1 5 9769
7 AI +2 + +4 +1 +1 5 15438
8 abcd + + +2 +2 4 305
9 Doll_backs + + +1 +2 4 418
10 ШИК + +2 -8 +2 + 4 504
Total 13 18 35 18 27 12 123
Success 10 10 9 4 10 7 50
% 77% 55% 26% 22% 37% 58% 41%

Здесь «User» – название команды, A,B,C,D,E,F – задачи, «Total» - число решенных задач, «Penalty» – число штрафных очков. Знак «+» означает, что задача принята, «+n» означает, что задача была принята после n неудачных попыток, «-n» - что задача не принята и было сделано n неудачных попыток.

4. ОСОБЕННОСТИ НАПИСАНИЯ ПРОГРАММ

4.1. На С/С++

Если решение задачи написано на языке С/С++, то для корректной работы тестирующей системы оно должно завершать работу с кодом возврата 0, т.е., например,

int main() { ... return 0; }

но не

void main() { ... }

Также вместо __int64 нужно писать long long (VC++ тоже понимает long long). Для использования hash_xxx следует подключить namespace __gnu_cxx (вместо stdext в VC++).

Вместо

#include <iostream.h>

надо писать:

Код:

#include <iostream> using namespace std;

itoa, atoi могут не компилироваться - тогда используйте sscanf, sprintf

4.2. На Java

Решение нужно оформить в виде публичного класса Main в пакете по умолчанию. В файле может быть произвольное количество непубличных и вложенных классов. Точка входа в программу - стандартный метод main(String[]).

Пример:

import java.io.*; public class Main { public static void main(String args[]) { //решение } }

5. ПОДВЕДЕНИЕ ИТОГОВ СОРЕВНОВАНИЯ

Результаты соревнований подводятся жюри.

За нарушение правил чемпионата или нарушение хода соревнований другим способом (например, неподобающее поведение, подключение или отключение дополнительного оборудования и проводов без согласия представителей оргкомитета) команда может быть дисквалифицирована. Участники команд, дисквалифицированных за нарушение правил, по решению жюри могут быть не допущены к соревнованиям следующего года.

В течение заранее объявленного времени (обычно в течение одного часа) после соревнований команда может направить в жюри письменную апелляцию в случае неправильного определения победителей, потери присланного решения и т.п. Жюри разбирает апелляцию, принимает решение и сообщает его команде.

Жюри обладает исключительным правом определения правильности присланных решений, определения победителей и дисквалификации команд. Жюри разбирает вопросы, возникшие в результате непредвиденных событий и обстоятельств. Решения жюри окончательны и обжалованию не подлежат.