я стал победителем гос. олимпиады по информатике с нуля(правда в отличном от вашего гос-ве), при том что информатика не преподавалась совсем, а противники были достаточно хорошо подготовлены. Так в чем же дело? естественно без мозгов результата не добиться, но главным было желание. Я действительно хотел изучить программирование и целенаправленно шел к этому, чего и вам советую. Определитесь с предметом - важно, что бы он был интересен и был проходным для интересующих вас специальностей в желаемых вузах и начните изучать. Как только поймете, что вы полностью освоили школьный курс своего уровня, ищите преподавателей, которые помогут вам в изучении предмета на уровне олимпиадника, ищите информацию в интернете, решайте задачи с предыдущих олимпиад, придумайте себе похожие.
К слову я этим всем не занимался, просто кодил. И выехать мне удалось только на хорошем знании математики и эрудированности что-ли - просто повезло знать те вещи, которые там пригодились.
Книжки, все остальное не является чем-то принципиальным. Одни вещи могут быть понятнее и интереснее изложены в одной книге, другие - в другой, поэтому читайте все, что найдете.