Как победить в олимпиаде по программированию?
1. Пользуясь поиском, находишь результаты и задачи уже прошедших олимпиад.
2. Пользуясь тетрадкой и ручкой пробуешь решить эти задачи, чтобы ты понимал смысл их решения на логическо-математическом уровне.
3. Потом пробуешь написать программу, которая решает конкретную задачу.

Таким образом, программирование - это последний этап. Сперва необходимо понимать как именно вычисляется/находится решение хотя бы руками на бумажке.

Повторяешь шаги 1-3 раз 10 с разными задачами.

Потом находишь организатора или тренера в вашем учебном заведении, который у вас занимается олимпиадами, рассказываешь ему что сделал и участвуешь.
Подскажите, пожалуйста, с чего же все-таки именно начать?1. Нужно научиться понимать текст и требования задачи.
2. Находить несколько (а лучше - все возможные) вариантов (алгоритмов) решения поставленной задачи (а их всегда более 1-го), и выбирать наиболее быстрый.
3. Научиться чётко и по шагам формулировать алгоритм/блок-схему решения (в голове или на бумаге) до начала написания кода в целях экономии времени на отладку кода и при поиске и устранении возможных ошибок.
4. Научиться чётко и с первой попытки конвертировать алгоритм в код на выбранном языке программирования.

Вот, для разминки: попробуйте начать с написания алгоритма для поиска решения полной сборки кубика-Рубика (все грани одного цвета) из любого начального состояния с наименьшим количеством задействованных (вращаемых) граней.