Здраствуйте. Начать программировать с 10 класса поздновато, но можно подготовиться к 11 классу, успев выучить базовые и не очень алгоритмы. Я бы посоветовал изучить
С++, потому что
Python часто не влезает в поставленные ограничения по времени.
В целом, знать
python на базовом уровне тоже надо, чтобы не приходилось писать длинную арифметику.
Поучите c++ по данным темам (написано в порядке изучения):
- Ввод/вывод
- Условные операторы (if - else, switch - case, тернарный условный оператор)
- Циклы (for, while, do while)
- Массивы (одномерные, двумерные)
- Функции
- Рекурсии
- Графы, введение в теорию графов
- BFS (обход в ширину)
- DFS (обход в глубину)
- Бинарный поиск
- Жадный алгоритм
- Динамическое программирования (также: НОП, НВП, задача об укладке рюкзака)
- Изучить встроенные контейнеры: vector, set, multiset, map, multimap, queue, priority_queue, stack, deque, list
Если намерены знать более сложные алгоритмы (вполне могут пригодится):
- алгоритм Дейкстры, Форда-Беллмана, Флойда
- Поиск мостов и точек сочленения, компоненты сильной связности
- Бинарный, а также тернарный поиск по ответу
- Дерево отрезков (без массовых операций)
- Доизучать контейнеры и структуры данных (в частности unordered версии)
Если намерены участвовать не только в перечневых олимпиадах, но и подготовиться к 11 классу к региональному и заключительному этапу ВОШ:
- ДП на подотрезках, на поддеревьях, по подмножествам (подмаскам), по профилю, по изломанному профилю
- Дерево отрезков с массовыми операциями, Декартово дерево (+ по неявному ключу), дерево Фенвика (многомерное)
- Система Непересекающихся Множеств
- Sparse table
- Нахождение LCA
- Корневая оптимизация
- Минимальный остов (алгоритм Прима, алгоритм Крускала, алгоритм Тарьяна)
- Z-функции
- Бор
- Хэши
- Кучи
Также, ко всему этому, надо подтянуть математику, в частности геометрию:
- Нахождение расстояния от точки до прямой
- Вектора (скалярное и векторное произведение)
- Да и логика не помешает
Удачи в начинаниях!