XI Открытый командный студенческий чемпионат УрГУ по программированию
Версия для печати

Правила соревнований

Памятка участника соревнования

1  Правила соревнования

1.1  Общая информация

Это командное соревнование проводится по правилам ACM ICPC (ACM International Collegiate Programming Contest). Каждая команда состоит из трёх участников. Продолжительность соревнований составляет 5 часов. Жюри имеет право продлить соревнование в случае возникновения непредвиденных обстоятельств.
Участникам будет предложено для решения от 6 до 13 задач. Для этого не требуются какие-либо глубокие знания в конкретной прикладной области или совершенное владение одним из языков программирования. Каждая задача предполагает ввод исходных данных из файла INPUT.TXT и вывод результата в выходной файл OUTPUT.TXT. Входной и выходной файлы располагаются в текущей директории.
В течении соревнования, участники решают предложенные задачи. Решением является исходный код на одном из доступных языков программирования, при этом различные задачи могут решаться на разных языках программирования.
Решения посылаются на проверку в течении соревнования с помощью специального программного обеспечения. После отправки на проверку одного из решений, участники могут продолжать работать над другими задачами. Решения проверяются прямо во время соревнования. Как только проверка очередного решения завершается, команда тут же уведомляется о её результате. Если решение не принято, участники могут попытаться исправить свою программу и послать её на проверку ещё раз.

1.2  Проверка решений

Каждое решение, отосланное Жюри на проверку, проверяется путем запуска на секретном наборе тестов, одинаковом для всех команд. Задача считается решенной, только в том случае, если решение выдает верные ответы на все тесты из набора Жюри.
Тестирование производится автоматически, поэтому программы должны в точности соблюдать форматы входных и выходных файлов, описанные в условии задачи. Если не оговорено отдельно, все входные данные предполагаются корректными и удовлетворяющими всем ограничениям, указанным в условии.
Для каждой задачи будет установлено максимальное время выполнения программы на каждом тесте. Решение не засчитывается, если программа не укладывается в указанный лимит времени.
После каждой проверки решения Жюри отправляет команде, предоставившей решение, сообщение с результатами тестирования. Команде сообщается, зачтено решение или нет. Если решение не зачтено, сообщается тип ошибки и номер теста, на котором произошла ошибка.
В ответ на посланное решение, команда получает один из следующих ответов от проверяющей системы:
  • Ошибка компиляции. (Compiler error) Жюри не удалось провести компиляцию вашей программы.
  • Превышен лимит времени. (Time limit exceeded) Время работы программы превышает максимально допустимое для данной задачи (указано в условии) либо программа требует ввода данных с клавиатуры.
  • Неверный формат вывода. (Presentation error) Выходной файл программы не был создан в результате ее выполнения либо программа аварийно завершилась, либо код возврата не нулевой, либо программа осуществляет вывод данных на экран. Чтобы код возврата был нулевой, используйте "return 0;" в С и С++ программах и не используйте "halt(n)" в PAS программах, где n отлично от нуля.
  • Неверный ответ. (Wrong answer) Содержимое выходного файла вашей программы не является корректным ответом для предложенного входного файла.
  • Зачтено. (Accepted) Задача засчитана. Переходите к решению других задач.
Тесты выполняются в порядке возрастанием их сложности (по мнению Жюри). Номер ошибочного теста, указываемый в результатах проверки, есть номер первого теста, не прошедшего проверку. Например, если Жюри сообщило, что "Time limit exceeded. Test № 9", это означает, что тесты с 1 по 8 прошли проверку, а на девятом тесте, более сложном, чем предыдущие восемь, программа превысила предел времени.
В этом случае можно заключить, что алгоритм правильный, но неэффективный.
Жюри может прекратить информирование команд о результатах проверки решений за несколько минут до конца соревнования, если возникнет ситуация перегрузки проверяющей системы. Тем не менее, все решения, посланные на проверку до завершения соревнования, будут протестированы Жюри после окончания соревнования и учтены в финальном протоколе.
Набор тестов, на которых Жюри проверяет решения, не предоставляется участникам даже после окончания соревнований.

1.3  Подведение итогов

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

2  Программное обеспечение соревнования

2.1  Вход в систему

При регистрации каждая команда получает информацию о том, в какой аудитории и на каком компьютере она будет работать во время соревнования. При регистрации или непосредственно перед началом соревнования каждая команда получает свой уникальный логин и пароль. Эти параметры необходимы для входа в университетскую сеть в режиме проведения соревнований. Их следует ввести в соответствующие поля приглашения сетевого клиента Netware. Следует также обратить внимание на содержимое вспомогательных полей (чтобы увидеть эти поля может потребоваться нажать на кнопку Advanced, расположенную в левом нижнем углу диалога). Содержимое полей должно быть следующим:
Tree: TREE_USU
Context: olimp.math.usu
Server: EDU
В случае если все указано правильно, но входа в систему не происходит, следует вызвать представителя оргкомитета.

2.2  Сетевые диски проверяющей системы

После входа в систему становятся доступными следующие сетевые диски:
X: - диск, общий для всех команд, доступный только для чтения, на котором расположены программы для взаимодействия с проверяющей системой. Здесь же могут находиться файлы с описанием ограничений на время работы решений (timelim.txt), с пояснениями к задачам, сделанными во время соревнования (clarif.txt), примеры правильной организации ввода/вывода в решениях (IOSamples) и т.п.
R: - диск, доступный только для чтения, с информацией, относящейся к конкретной команде. Именно на этом диске появляются подтверждения о том, что решение проверено. Здесь же остаются файлы с ответами жюри на заданные командой вопросы.
W: - диск, доступный только на запись. Используется проверяющей системой и не должен непосредственно использоваться участниками. За попытки несанкционированного использования этого диска команда может быть дисквалифицирована.

2.3  Программы проверяющей системы

Всем участникам во время соревнований доступны следующие программы, располагающиеся на сетевом диске X:
runMonitor.bat - файл запуска HTML-версии монитора. За час до окончания соревнования результаты, доступные участникам, замораживаются, чтобы сохранить интригу до церемонии награждения.
runClient.bat - файл запуска графического интерфейса для передачи решений на проверку Жюри, для передачи вопроса Жюри, для передачи файлов на печать (во время пробного тура печать производиться не будет; во время основного тура количество распечаток от одной команды ограничено).

2.4  Решения

Решением является программа (файл с исходным текстом), составленная на одном из предложенных языков программирования.
На соревнованиях будут предложены следующие среды программирования:
  • Microsoft Visual C++ 6.0
  • Borland Delphi (версии 6.0 или 7.0)
Решения участников, посланные на проверку, обрабатываются соответствующим компилятором. При этом используются следующие опции:
Вызов компилятора MS VC++: cl.exe /GX /Od
Вызов компилятора Delphi: dcc32.exe -CC -$O-
Набор библиотек и модулей, доступных участникам во время соревнования, ограничен (доступны основные библиотеки/модули для выполнения операций с файлами, со строками, математических операций). Во время пробного тура команды должны убедиться в доступности необходимых им библиотек. Для этого в каталогах X:\Compile\Delphi6 и X:\Compile\MSVC6 будут размещены компиляторы, используемые Жюри для проверки решений. Любая команда может проверить, компилируется ли решение в конфигурации Жюри, путем выполнения команд:
X:\Compile\Delphi6\compile.bat <решение>
X:\Compile\MSVC6\compile.bat <решение>
До начала основного тура команда может обратиться к Жюри с просьбой расширения доступного набора библиотек и модулей.
Гарантируется, что решению участника на компьютере Жюри будет доступно как минимум 10Мб оперативной памяти. Этого объема вполне достаточно для того, чтобы решить каждую задачу из предложенного комплекта.
Размер файла с исходным текстом решения не должен превышать 64Кб.

2.5  Правила, которые следует соблюдать

В ходе всего соревнования для входа в сеть должен использоваться только клиент Novell NetWare и только с параметрами, полученными при регистрации. Нарушители этого правила могут быть дисквалифицированы.
Участники могут приносить с собой и использовать ТОЛЬКО словари (для перевода с английского языка), чистые листы бумаги и инструменты для письма. Запрещается приносить и использовать книги, справочники, руководства, электронные словари, листинги программ и т.д. Также запрещается приносить и использовать информацию в электронном виде, личные компьютеры, калькуляторы, мобильные телефоны и прочие телекоммуникационные устройства. Участники могут пользоваться установленным на компьютерах электронным словарем Lingvo.
В решениях задач запрещено:
  • любое использование сетевых средств;
  • создание и работа с любыми файлами, за исключением файлов INPUT.TXT (из которого программа читает входные данные) и OUTPUT.TXT (в который программа должна выдавать ответ).
  • любые попытки намеренно вывести из строя систему проведения соревнований;
  • выполнение внешних программ и создание новых процессов;
  • изменение прав доступа файловой системы;
  • работа с директориями;
  • любой ввод/вывод с консоли;
  • создавать и работать с любыми GUI-элементами (окнами, диалогами и т.д.);
  • работать с внешними устройствами (принтером, звуковой картой и т.д.);
  • доступ и модификация любых зарезервированных или системных областей памяти, таких как, например, таблица прерываний и т.п.;
  • любые другие действия, которые могут нарушить работу программного обеспечения соревнования;
  • нарушение любых законов РФ (будет караться соответствующими органами).
Нарушители данных правил могут быть дисквалифицированы по решению Жюри.