|
Всероссийская олимпиада школьников по информатике в г.Москве,
2021/22 учебный год
Памятка участника регионального этапа
До начала тура...
В аудитории до начала тура убедитесь в том, что...
- Ваш компьютер работает.
- Необходимые среды программирования установлены и работают.
- Вы понимаете, куда можно сохранять свои решения.
- Вы можете войти в тестирующую систему под своим логином и паролем.
При наличии каких-либо проблем, сообщайте об этом дежурным в аудитории.
До начала тура нельзя прикасаться к условиям задач.
Правила проведения регионального этапа
Правила проведения регионального этапа имеют отличия от правил проведения муниципального этапа.
Для знакомства с правилами оценивания задач
всем участникам регионального этапа рекомендуем принять участие
в тренировочных турах
регионального этапа.
- Олимпиада проводится в два тура (15 и 17 января 2022). Результаты
олимпиады определяются по сумме баллов за два тура.
Продолжительность каждого тура составляет 5 часов.
На каждом туре предлагается 4 задачи.
- Участники олимпиады должны иметь при себе паспорт или
свидетельство о рождении (участникам, которым не исполнилось 14 лет).
- Во время тура запрещается использование любой
литературы, в том числе в бумажном виде, а также
заранее заготовленных записей
- Во время тура запрещается использование любых личных электронных
устройст, кроме личной клавиатуры и мыши, которые можно подключить к компьютеру.
Мышь и клавиатура должны подключаться по интерфейсу USB, не требовать дополнительных
драйверов, не содержать встроенной памяти.
- Программа должна использовать стандартный ввод-вывод
(данные читаются с клавиатуры, выводятся на экран).
- В программах запрещается любое использование сетевых средств,
любая работа с файловой системой (чтение, запись, удаление файлов,
чтение, создание, удаление каталогов), создание новых процессов или потоков
исполнения, запуск программ (в том числе вызов
system("pause")
в программах на C++), использование GUI операционной системы,
использование любых системных вызовов
(кроме вызовов выделения и освобождения памяти), любые действия, направленные на дестабилизацию работы тестирующей системы.
- В условии каждой задачи приведены примеры входных и выходных данных для этой задачи.
Решение участника запускается на тестах из примеров, приведенных в условии задачи,
результат работы на этих тестах сообщается участнику.
- Для каждой задачи в условии сформулированы подзадачи. Тесты для каждой задачи разбиты на группы,
каждой подзадаче соответствует группа тестов. Для каждой подзадачи также могут быть указаны необходимые подзадачи.
Для каждой подзадачи указано максимальное количество баллов за эту подзадачу.
- Для каждой подзадачи в условии задачи указано, каким образом оценивается эта подзадача. Возможны два варианта:
а) Потестовая оценка: каждый тест в подзадаче оценивается независимо.
Баллы за подзадачу равны сумме баллов за тесты для этой подзадачи,
на которых решение участника с соблюдением всех ограничений вывело правильный ответ.
б) Полная оценка: баллы за подзадачу начисляются только в случае, когда все тесты для этой подзадачи пройдены успешно.
Баллы за подзадачу равны либо максимальному баллу за подзадачу, если все тесты пройдены успешно,
либо нулю, если хотя бы один тест для этой подзадачи не пройден.
- Если для некоторой подзадачи в условии указаны необходимые подзадачи, то баллы за эту подзадачу начисляются только,
если все тесты всех необходимых подзадач успешно пройдены. Тестирующая система может не запускать решение на тестах для этой подзадачи,
если это условие не выполнено.
- Общее количество баллов за задачу равно сумме баллов, полученных за каждую подзадачу.
- Общее количество баллов участника равно сумме баллов, полученных за каждую задачу.
- Участник может отправлять решения одной и той же задачи на проверку несколько раз.
Баллы за каждую задачу равны максимальному баллу среди всех отправленных на проверку решений.
- В условии каждой задачи про каждую подзадачу указано, какая информация о результатах проверки решения сообщается участнику. Возможны следующие варианты:
а) участнику сообщается суммарное количество баллов, которым оценивается его решение на тестах для этой подзадачи;
б) участнику сообщается результат проверки его решения на каждом тесте для этой подзадачи;
в) участнику сообщается, что все тесты для этой подзадачи пройдены, либо номер первого теста внутри подзадачи, который не пройден и тип ошибки на этом тесте. В этом случае тестирующая система может не осуществлять запуск на тестах для этой подзадачи после первого непройденного.
- Во время тура участник может отправить в тестирующую систему
не более 150 решений суммарно по всем задачам. Ограничение на размер файла с решением — 256 килобайт. Ограничение на время компиляции
программы — 1 минута. Ограничение по времени выполнения программы и используемой памяти указано в условии задачи.
- Не на всех языках программирования все задачи могут быть
выполнены на полный балл. Гарантируется возможность
решения всех задач на полный балл с использованием компилятора
GNU C++.
Возможность получения полного балла с использованием других языков программирования
не гарантируется, но производительность программ на языках Паскаль, Java, C#
обычно также достаточна для того, чтобы решить все задачи на полный балл.
Подробнее о языках программирования изложены ниже.
- Вопросы по условиям задач, задаваемые участниками
через тестирующую систему, должны формулироваться так,
чтобы ответ был в форме “да” или “нет”.
В отличие от муниципального этапа, если ответ на вопрос содержится
в условии задачи, жюри будет отвечать на вопрос сообщением
“Читайте условие задачи”, а не содержательным
разъяснением.
Замечания по языкам программирования
При проверке заданий ограничения по времени и памяти на программу
будут одинаковыми для всех языков программирования. Поскольку сложность
задач регионального этапа значительно выше, чем на муниципальном этапе,
то возможно, что на некоторых языках программирования невозможно
набрать полный балл в некоторых задачах. Прежде всего
это относится к интерпретируемым языкам программирования,
например, Python, скорость работы которых в несколько
раз меньше (а зачастую и в сотни раз меньше),
чем скорость компилируемых языков Pascal и C/C++.
Оргкомитет и жюри олимпиады стремится привлечь к участию
в олимпиаде как можно большее число участников, разрешая использовать
большое число различных языков программирования, но при этом
участники олимпиады должны понимать возникающие при этом ограничения.
Особенности отдельных языков программирования.
Visual C++ — в тестирующей системе
этот компилятор отсутствует, вместо него следует использовать GNU C++.
В программах на Visual C++ не должны использоваться предварительно
откомпилированные заголовочные файлы (директива препроцессора
#include "stdafx.h" ), не должно быть
вызова system("pause") , иных нестандартных
особенностей компилятора Visual C++.
Программа должна быть написана в соответствии со стандартом языка C++.
Free Pascal —
при сдаче решений на Free Pascal следует учитывать, что в используемых
стандартных настройках компилятора (без использования специальных
опций компиляции в тексте программы) тип integer является 16-битным,
а длина строки ограничена 255 символами.
Pascal, Java, C# —
возможность решения всех задач на полный балл на этих
языках не гарантируется, но скорее всего производительность
этих языков программирования достаточна для этого.
Visual C# — в тестирующей системе
этот компилятор отстутсвует, вместо него следует использовать
компилятор Mono C#.
Python —
скорее всего не все задания олимпиады могут быть выполнены на полный балл. Жюри
предполагает, что при помощи языка Python можно набрать балл, достаточный для призера олимпиады, но
не дает никаких гарантий.
Операционная система и программное обеспечение на компьютерах участников
На компьютерах участников будет установлено следующее программное обеспечение.
Операционная система Windows |
Язык программирования |
Доступные среды разработки |
C, C++ |
Code::Blocks, Visual Studio, CLion |
Python |
Wing IDE 101 или Wing IDE Personal, PyCharm, IDLE |
Pascal |
Free Pascal, PascalABC.Net |
Java |
IntelliJ IDEA |
C# |
Visual Studio |
В системе Linux будут установлены следующие языки программирования и среды разработки:
Операционная система Linux |
Язык программирования |
Доступные среды разработки |
C, C++ |
Code::Blocks, CLion, Visual Studio Code |
Python |
Wing IDE 101, Wing IDE Personal, PyCharm, IDLE, Visual Studio Code |
Pascal |
Free Pascal |
Java |
IntelliJ IDEA |
C# |
Visual Studio Code |
Текстовые редакторы |
Sublime text, vim, emacs, geany |
Работа с тестирующей системой
Командные строки, используемые в тестирующей системе для компиляции программ, указаны в тестирующей системе.
Возможные результаты проверки решений указаны в таблице.
Результат |
Что это означает |
Возможная причина |
Ошибка компиляции |
Исполняемый файл не был создан при компиляции. В этом случае запуск решения на тестах не производится. |
- Синтаксическая ошибка в программе;
- Неверно указан язык программирования;
- Решение на Visual C++ использует нестандартные возможности языка, например, директиву
#include<stdafx.h> ,
функцию itoa или исключённую из стандарта функцию gets .
|
Нарушение правил безопасности |
Программа нарушает правила олимпиады |
- Нарушение правил олимпиады;
- Ошибка в программе;
- Вызов
system("pause") в программах на C/C++.
|
Превышено максимальное время работы |
Программа превысила лимит времени работы |
- Неэффективное решение;
- Ошибка в программе (программа зацикливается);
- Ошибка в считывании данных (программа ожидает ввода данных, хотя входной поток данных уже закончился);
- Программа ожидает от пользователя нажатия на клавишу после вывода ответа.
|
Превышен лимит по памяти |
Программа превысила лимит используемой памяти |
- Неэффективное решение;
- Ошибка в программе;
- Бесконечная (или очень большая) рекурсия;
- Ошибки при работе с указателями в C/C++ также могут диагностироваться, как "Превышен лимит по памяти"
|
Ошибка выполнения |
Программа совершила некорректное действие в ходе исполнения |
- Некорректное арифметическое действие (деление на ноль, извлечение корня из отрицательного числа, переполнение переменной).
- Ошибка при работе с памятью и структурами данных (выход за границы массива, разыменование некорректного указателя,
удаление несуществующего элемента из структуры данных, переполнение стека, превышение лимита доступной памяти);
- Нарушение правил олимпиады (работа с файлами, вызов сторонних программ);
- Бесконечная (или очень большая) рекурсия;
- Синтаксические и иные (например, обращение к несуществующей переменной) ошибки в программах на Python и других
интерпретируемых языках;
- В программе явно указан ненулевой код возврата;
- Превышение лимита по памяти также может диагноситроваться, как "Ошибка выполнения".
|
Неправильный формат вывода |
Вывод программы не соответствует условию задачи |
- Программа выводит ответ в формате, не соответствующем условию задачи;
- Программа не вывела ничего;
- Программа выводит результат в файл, а не на стандартный вывод;
- Ошибка в программе (например, программа вывела ответ дважды);
- В программе есть отладочный вывод;
- Программа выводит лишние сообщения типа "Введите число" или "Ответ".
- Программа должна вывести числа в одной строке через пробел, а вывела их в разных
строках или наоборот;
- Программа должна вывести целое число, а выводит действительное число, запись
которого содержит десятичную точку, из-за того, что программа использует
действительный тип данных вместо целочисленного.
|
Неправильный ответ |
Программа вывела неправильный ответ |
- Неверный алгоритм решения;
- Ошибка в реализации алгоритма решения.
|
OK |
Программа выдала правильный ответ на этом тесте |
- Программа корректна;
- Решение неверное, но у жюри слабая система тестов.
|
Пропущен |
Запуск программы на данном тесте не производился |
- Предыдущий тест данной подзадачи не пройден;
- Пройдены не все тесты подзадач, необходимых для проверки данной подзадачи.
|
Ошибка проверяющей системы |
Тестирущая система не смогла выполнить проверку решения |
- Не волнуйтесь, это будет скоро исправлено.
|
|