You are not logged in. Please login at to post your questions!


Preparing for IOI


Hello people,

I wanted to have a chronological order for all the topics for the preparation of IOI and that is why I am creating this thread. The main motive is that my school has allowed me and other interested students to form a group to start preparing students for OIs. I will be introducing it to the junior classes. So, it would be nice if the order started from the very basics and went to intermediate or even advanced if people are willing to contribute. This is a community wiki so feel free to edit it for the help of myself and all those who prepare for IOI in present or future. :)

I know that these exist:

But non of these are "chronologically ordered". Topics are better ordered with increasing order of difficulty, starting from changing from Turbo C++ to GNU C++11.

For now, I am creating a very rough order. I hope more people contribute to it. Also, I will keep editing it till I can. :)
  1. Big O Notation
  2. Ad hoc problems
  3. Brute force
    • Using DFS
    • Using BFS
    • Permutation generation
    • Subset generation
  4. Maths
  5. Greedy
  6. Data structures(Excluding graph)
    • Arrays
    • Strings
    • Vectors
    • Stack
    • Queue
    • Heap
    • List
    • Deque
  7. Divide and conquer
    • Binary search(In an array/On answer)
    • Merge sort
    • Segment tree
    • Merge sort tree
    • Centroid decomposition
  8. Dynamic Programming
    • Introduction(Possibly using the classic fibonacci example)
    • LCS/LIS
    • Edit Distance
    • Knapsack
    • Matrix Chain multiplication
  9. Graphs
    • BFS/DFS
    • Flood Fill
    • Shortest Path algos
    • MST
  10. String algos
P.S. Add subtopics as subcategories :)

Thank you in advance to all who contribute!

This question is marked "community wiki".

asked 07 Aug '17, 15:58

ista2000's gravatar image

2★ista2000 ♦
accept rate: 20%

edited 15 Aug '17, 00:03


All the best dear :)

(07 Aug '17, 16:03) vijju123 ♦4★

You can add some topics too @vijju123 :P

(07 Aug '17, 16:06) ista2000 ♦2★

Great initiative @ista2000

(09 Aug '17, 22:25) akashbhalotia3★

But not one contribution from anyone :(

(10 Aug '17, 05:57) ista2000 ♦2★

^^ This might be helpful although this just contains topics for ZCO and INOI.

(12 Aug '17, 20:01) mathecodician5★

@mathecodician It will also be good if you add one or two topics ;_;

(12 Aug '17, 20:43) ista2000 ♦2★ (From Commonlounge community of International Olympiad in Informatics)

Haven't found a better compilation for IOI preparation than the above playlist. Hope this helps!

(21 Aug '17, 23:43) orcus2★
showing 5 of 7 show all

I think bruteforce is the most basic skill:

BFS, DFS, combination and permutation generation.


answered 07 Aug '17, 23:28

vasja's gravatar image

accept rate: 7%

I second this. Without brute force you'll never know if your solution is correct.

(08 Aug '17, 01:52) liaojh5★

Thank you, you can edit the original post though. :)
The only reason I put it out because I most likely will miss some topics.

(08 Aug '17, 02:03) ista2000 ♦2★

What is a brute force? Can someone explain?

(19 Aug '17, 06:20) kunnu1202★

Most of the students love maths,so i think number theory will be good after bruteforce.


answered 08 Aug '17, 11:09

hruday968's gravatar image

accept rate: 14%

Please do add anything you want to suggest. That's the whole point of marking it as a community wiki

(08 Aug '17, 14:50) ista2000 ♦2★

Well probably there must be something related to STL of C++ as well. Being honest I didn't know much regarding it at start :p


answered 08 Aug '17, 13:41

dishant_18's gravatar image

accept rate: 11%

Sure, please feel free to add anything you would like :)

(08 Aug '17, 14:49) ista2000 ♦2★

Can you tell me how can I add? P.S. I am not that familiar with this stuff. Sorry if its annoying question :p

(10 Aug '17, 23:15) dishant_181★

Hey @ista2000 It is really good that you have started it. You can take help from forums too. They include quite good topics. Moreover talking about number theory you can add topics like

  1.Euler totient function.

    2.Matrix Exponentiation(Not sure whether it's a part of number theory but it is quite useful when you work on recursive function).

3.Fermat Little Theorem is also very important sometimes (in modulo functions)

 4.Lastly I remember a topic SOS Dynamic Programming approach. If you want to add. :)

answered 10 Aug '17, 15:30

vishesh_345's gravatar image

accept rate: 8%

edited 10 Aug '17, 15:31

Thank you :)

(12 Aug '17, 20:15) ista2000 ♦2★

U r welcome :)Btw those links were helpful.

(13 Aug '17, 14:25) vishesh_3451★



Please add these two topics also after maths, because these topics are more often asked in almost all the contest. Otherwise, the order is great.

Hope this helps!


answered 14 Aug '17, 20:21

sandeep_007's gravatar image

accept rate: 15%

You can click the "Edit it" button where it is written "This question is marked "community wiki". Feel free to edit it.". Please do add as many topics as you can! It will help me a lot.

(14 Aug '17, 20:59) ista2000 ♦2★

I think it has some limit, like "Users above X karma can edit community wiki. ".

I guess I can add this stuff for him :D

But idk the order T_T

(14 Aug '17, 21:23) vijju123 ♦4★

Order the broad topics in any way but add the subtopics in order of difficulty. For eg, In divide and conquer, first its binary search, next quick sort and then centroid decomposition. Please do add T_T

(14 Aug '17, 23:05) ista2000 ♦2★

@ista2000 if it is possible then please provide us with links to these topics as there is much information on web and finding a better resource may not be possible for noobs like me so please help by adding links. Anyways nice initiative.


answered 20 Aug '17, 19:14

itachi_2016's gravatar image

accept rate: 0%

toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here



Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text]( "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported
  • mathemetical formulas in Latex between $ symbol

Question tags:


question asked: 07 Aug '17, 15:58

question was seen: 2,183 times

last updated: 15 Nov '17, 18:46