1) учишь язык Си++/Питон, в общем любой подходящий для соревнований с хорошей библиотекой
2) Учишь алгоритмы, есть хорошая книжка А.Лааксонен "Олимпиадное программирование" - прочитай и пойми
3) Много, очень много практики и выработка чувства алгоритмики в задачах - решай задачнки на leetcode, codeforces и других соревнованиях.
4) Ну ещё была бы полезна очень хорошая смекалка, которую можно натренировать на решении логических головоломок - поможет скреативить в случае, если вдруг что-то новое попадётся, что трудно будет сразу в алгоритмы отобразить
5) ну ещё полезно осовить быструю печать, т.к. если цель не глядеть на лидеров, а быть среди них, то скорость решения может определять результаты, поэтому быстрее напишешь решение - больше шансов победить.