We can highly recommend the following material for you to train for our olympiad:
If you are just getting started you should take a look at our chapters for the first round in our Wiki. It answers questions like How do I learn how to program? and What is an algorithm?.To the Wiki
If you want to solve your first SOI tasks, then please take a look at our tasks from former first rounds. You can find them in our task archive. Here are for example the tasks of the first round 2018.
Always in October and November (during the first round), we offer our Introductory Workshops.
Reading and Learning
To dive deep into our challenging topics, we recommend that you read the chapters in our Wiki. They are grouped by the rounds of our contest.
For the concepts in C++ that are most relevant to solve our practical tasks, you can find a Tutorial (PDF, in German) here (and all the source code as well).
If you want to go deeper into the theory, here are some book recommendations:
- Competitive Programmer’s Handbook by Antti Laaksonen (free as a PDF, very cool and brand new)
- Competitive Programming by Steven Halim
- The Algorithm Design Manual by Steven Skiena
- Looking for a Challenge? task collection of the university of Warsaw
- Algorithms in C by Robert Sedgewick (Addison Wesley)
- Introduction to Algorithms by Thomas H. Cormen (MIT Press)
We also have a list of SOI-relevant algorithms, that roughly summarizes the official syllabus of the IOI.
Train, train and train
Real training cannot be replaced by anything. We recommend that you try to solve as many of our old tasks in the archive as possible! For many of those you can also find master solutions there.
There are plenty of websites with thousands of tasks. Many of them also hold regularly live contests:
- Sphere Online Judge (one of the largest collection of tasks)
- USACO (training course of the US team)
- Codeforces (weekly contests on different levels of difficulty)
- Topcoder (incl. tutorials), codechef, HackerRank and codefu
- IOI Archive (on the websites of the past IOIs, you can find the tasks that were given then)
To make the training more interesting, we put together a few Ladders. If you solved enough tasks, you can exchange them for interesting books and other prices.To the task archive To the Ladders