Первая ступень
DUNA
DUNA · Олимпиадное программирование
Уметь писать код и уметь решать олимпиадные задачи — разные вещи. Учимся решать: сначала понять задачу и придумать подход, и только потом писать программу.
Для кого
11–16 лет: уже умеют программировать на базовом уровне, но системно олимпиадными задачами ещё не занимались. Не курс «с нуля» — переход от программирования к олимпиадным задачам.
Формат
- онлайн · 1 занятие в неделю · 60 минут
- небольшая группа — до 6 человек
- задачи самостоятельно между занятиями
- учебный год: октябрь → июнь
- C++ параллельно с задачами
- 20 € / занятие
Перед началом — небольшое входное тестирование: не конкурсный отбор, а чтобы собрать группы подходящего уровня.
Чему научимся за год
- Понимать условие: что дано на вход, что нужно получить, зачем примеры и ограничения
- Решать по шагам: идея → план → оценка «успеем ли» → код → проверка
- Находить простое решение и улучшать его, если нужно
- Самостоятельно писать решение на C++ и разбирать, почему программа ошибается или не укладывается во время
Программа курса
Год состоит из модулей — небольших учебных блоков со своей целью. В начале больше опоры: как читать задачу и аккуратно писать код. К концу года — больше самостоятельной практики на уже знакомых идеях. Язык C++ осваиваем вместе с задачами, а не отдельным длинным курсом «только синтаксис».
-
01
Старт олимпиадника
3 неделиУчимся читать задачу спокойно и рассуждать до кода. Это первый шаг от «я умею программировать» к «я умею решать олимпиадные задачи».
- Как устроено условие: входные данные, ответ, примеры
- Пошаговый путь к решению: от идеи к проверке
- Ограничения и оценка сложности: time/space в виде O(...), зачем это нужнее подсчёта операций
- Особые случаи: границы да/нет, ноль и пустота, деление на 0, индексы; вердикты WA/TLE/RE
-
02
Реализация по условию
4 неделиПереносим решение в код точно по сюжету задачи: уверенно читаем данные, работаем с массивами и строками, сами проверяем крайние случаи.
- Удобный шаблон программы и аккуратный ввод-вывод
- Массивы: как хранить последовательность чисел и проходить по ней
- Подсчёт, как часто встречается значение
- Решение «шаг за шагом» по описанию в условии
- Работа со строками и типичные ошибки с индексами
-
03
Полный перебор
3 неделиИногда достаточно проверить все подходящие варианты. Учимся понимать, когда такой подход уместен, а когда программа будет слишком долгой.
- Как размер данных связан со временем работы программы
- Перебор пар и троек значений
- Аккуратная организация перебора: что ищем и когда останавливаемся
- Почему лишние циклы делают решение слишком медленным
-
04
Сортировка и умный проход
4 неделиСортировка помогает навести порядок в данных. После этого многие задачи решаются простым и понятным проходом — в том числе с двух сторон массива.
- Сортировка чисел и зачем она нужна в задачах
- Задачи, которые становятся проще после упорядочивания
- Проход с двух концов массива на понятных примерах
- Осторожность с равными значениями и границами
-
05
Префиксные суммы
3 неделиУчимся заранее «подготовить» массив, чтобы быстро отвечать на вопросы про отрезки — например, сумму чисел на участке — без долгого пересчёта каждый раз.
- Идея накопления: что такое префикс и как его построить
- Быстрый ответ на вопрос о сумме на отрезке
- Аккуратная работа с большими числами
- Типичные сюжеты и частые ошибки на границах отрезка
-
06
Бинарный поиск
4 неделиИщем нужное значение не перебором всего подряд, а делением диапазона пополам — быстрее и аккуратнее, когда ответ «ведёт себя предсказуемо».
- Когда поиск делением пополам вообще возможен
- Поиск числа в упорядоченном массиве
- Как правильно сужать границы поиска
- Поиск самого ответа в задаче, а не только элемента в массиве
- Как выбрать: бинарный поиск или другой способ
-
07
Жадные стратегии
3 неделиИногда на каждом шаге достаточно брать локально лучший выбор. Главное — научиться объяснять, почему так можно, и замечать, когда такой подход обманывает.
- Идея «лучшего шага прямо сейчас» на понятных историях
- Когда перед жадным выбором помогает сортировка
- Проверка идеи: пример, который подтверждает, и пример, который опровергает
- Как решить: жадная стратегия или полный перебор
-
08
Математика, подсчёт и закрепление
4 неделиДобавляем простую олимпиадную математику и удобные способы считать «сколько раз» и «встречалось ли уже». Затем закрепляем год смешанными задачами и учебной проверочной работой.
- Делимость и остатки в задачах
- Подсчёт частот и проверка уникальности
- Смешанные задачи: какую идею года выбрать
- Учебная проверочная работа на пройденном материале
-
09
Финал года
2 неделиСобираем итог года: что уже получается уверенно, что стоит подтянуть, и как дальше практиковаться — спокойно и шаг за шагом.
- Повтор пути решения на чуть более сложных задачах
- Личные сильные стороны и темы для самостоятельной добивки
- Что делать дальше: контесты и олимпиады — по желанию, без гонки за результатом