# Олимпиадное программирование для школьников: с чего начать

> Как подготовиться к олимпиадам по программированию: ВОШ, Codeforces, ICPC. Языки, темы, задачи и ресурсы для школьников от 12 лет.

Source: https://codims.ru/stati/olimpiadnoe-programmirovanie-dlya-shkolnikov/

---

## Что такое олимпиадное программирование

На олимпиаде дают задачи: нужно написать программу, которая решает задачу за ограниченное время и память. Задачи требуют знания алгоритмов: сортировка, поиск, динамическое программирование, графы, математика.

Главные соревнования для школьников в России: ВОШ, или ВсОШ — олимпиада школьников по информатике и программированию, Открытая олимпиада школьников по информатике, Олимпиада Иннополиса, олимпиады НИУ ВШЭ, МФТИ, ИТМО. Международный уровень: IOI (International Olympiad in Informatics).

## Какой язык выбрать для олимпиад

На российских олимпиадах разрешены: C++, Python, Java, Pascal. Выбор языка критически важен:

-   **C++** — стандарт для серьёзных олимпиад. Самый быстрый, богатая STL (структуры данных из коробки). Сложнее учить, но необходим на высоком уровне
-   **Python** — хорош для начального уровня. Медленнее C++ в 50–100 раз, но на многих задачах ВОШ хватает. Понятный синтаксис
-   **Java** — компромисс. Быстрее Python, богатая стандартная библиотека

Рекомендация: начинайте с Python. Когда дойдёте до задач, где Python не укладывается в лимит — переходите на C++.

## Темы, которые нужно знать

Базовый уровень (школьный этап ВОШ):

-   Переменные, условия, циклы, функции
-   Массивы и строки
-   Сортировка (пузырьковая, быстрая, sorted в Python)
-   Поиск (бинарный поиск)
-   Базовая математика: делимость, простые числа, НОД/НОК

Продвинутый уровень (региональный/финал ВОШ):

-   Динамическое программирование
-   Графы (BFS, DFS, Дейкстра)
-   Жадные алгоритмы
-   Стеки, очереди, деревья
-   Теория чисел, комбинаторика

## Где тренироваться

-   **Codeforces** — главная платформа для тренировок. Рейтинговые контесты каждую неделю
-   **Acmp.ru** — архив задач российских олимпиад с объяснениями
-   **Informatics.msk.ru** — платформа для школьников, задачи ВОШ
-   **LeetCode** — задачи уровня собеседований в компании (больше для старших)
-   **Яндекс.Контест** — задачи и контесты от Яндекса

Курс подготовки

### Олимпиадное программирование на Python

Курс для школьников 12–16 лет, которые хотят участвовать в олимпиадах. Алгоритмы, структуры данных, разбор задач ВОШ. Живые занятия в малых группах.

[Подробнее о курсе](/courses/olympiad-python/)
