Как научится решать олимпиады по программироанию и где?
Чтобы научится решать олимпиадные задачи по программированию, надо самостоятельно найти хотя бы один годный ресурс.
Без этого - никак.
берете задачи https://icpc.baylor.edu/worldfinals/problems и решаете. 
Если совсем не получается, гуглите разбор задач: https://habrahabr.ru/company/yandex/blog/186316/