Can Language Models Solve Olympiad Programming?