Никак
Знающий не говорит, говорящий не знает (Лао Цзы)
Просто участвуй в олимпиадах. Пытайся. Снова и снова. И наконец, тебе должно по настоящему нравится решать олимпиадные задачки, иначе все твои усилия будут бесполезны.
От себя скажу что решать олимпиады по программированию != Хорошо программировать
Говорю как человек в оных регулярно участвующий.
Олимпиады приучают ко всем антипаттернам, ограничения по времени не дают найти красивое и изящное решение, заставляют копипастить и писать "лишь бы работало".
Не веришь? Посмотри любые решения олимпиадников - на codeforces.com например.
Там по всем стандартам ад и ужас.
Лучше потратить время на что то действительно полезное, например на свой проект, разработка которого только в радость.