Informatics Olympiad Guidelines (Basic to Intermediate)
Written by:
Sayed Md. Mohiuddin Sami
BdOI National Camper, 2023 & 2024
HSC-25, RUMC.
“ Too often we give our children answers to remember rather than problems to solve.”
-Roger Lewin
This guideline is designed for students of different grades who are eager to participate in the Bangladesh Olympiad in Informatics, from beginners to advanced. The learning materials are roughly arranged from easier to more challenging. You don’t have to read all of them, just pick any one you like and you can start reading. If something feels too difficult or the language doesn’t feel right for you, don’t worry—it’s okay to move on to another one that suits you better. Above all, Learning should be fun, so keep learning and enjoy your journey.
Step 1: Learn C Language (Required Languge For IOI/BdOI)
Do you know?
C language is considered as the mother language of all the modern programming languages because most of the compilers, JVMs, Kernels, etc. are written in C language, and most of the programming languages follow C syntax, for example, C++, Java, C#, etc .It provides the core concepts like the array, strings, functions, file handling, etc. that are being used in many languages like C++, Java, C#, etc.
After Learning Language:
Advises:
- You can learn basic syntaxes of C++ but don’t go for object oriented programming. Here is a tutorial (Link)
- But who said Competitive programming doesn’t involves mathematics? You should have a good understanding of these (Link)
- Lastly, if you wanna crack nationals one thing you mush know is basic STL functions. Here is a nice tutorial in Bangla for you (Link)
Guidelines:
- Here Learning C++ is not a necessity. But I will highly recommend you to learn about STL.
- Although, there are a lot of mathematical terms mentioned in the list above, the highest you will be needing for cracking nationals is “Modular Arithmetic”, “Modular Inverse”, “Extended Eucledian Algorithm” and “Sieve of Erathosthenes”
Data Structures and Algorithms:
Resources:
Guidelines:
- You can’t master every Algorithm overnight it takes months even years of dedication and hard-work.
- But in reality to qualify for nationals you will just need “Prefix Sum”, “Binary Search” and “Basic understanding of Graph Theory”.
- Rather than just learning a algorithm by reading a book or watching a tutorial, Its far better to learn a algorithm or Data Structure by actively finding a solution for a new problem.
- Also, If you get stuck in this whole mess. Just feel free to knock me : ” )
For problem solving:
An example of the problem solving process:
Consider the following famous problem:
“A census-taker knocks on a door, and asks the woman inside how many children she has and how old they are.
“I have three daughters, their ages are whole numbers, and the product of their ages is 36,” says the mother.
“That’s not enough information,” responds the census-taker.
“If I told you the sum of their ages, you still wouldn’t be able to determine their ages,” says the mother again.
“I wish you’d tell me something more,” replies the census-taker.
“Okay, my oldest daughter Annie likes dogs.”
What are the ages of the three daughters?
The first step is to keep a clear mind and extract any piece of information you can get. Pay attention to each sentence. The first pieces of crucial information are in the following sentence:
“I have three daughters, their ages are whole numbers, and the product of their ages is 36,” says the mother.
Right now, they’re given in a non-mathematical format, but it’s easier to work with mathematical language. To convert, let x,y and z represent the ages of the three daughters. We immediately get that x,y and z are positive whole numbers (age can’t be negative), and xyz=36. The next pieces of information are
“If I told you the sum of their ages, you still wouldn’t be able to determine their ages,” says the mother again.
“Okay, my oldest daughter Annie likes dogs.”
Currently, it’s hard to understand what information they give us, but what we do understand is that the sum of their ages is somehow important in this problem. Finding no other strategy, let’s make a table, consisting of all possible values of x, y and z (knowing that they are positive integers with a product of 36 is enough to determine all possible values), and their sums. The upper row represents their ages and the lower row represents their sum.
(x,y,z) | (1,1,36) | (1,2,18) | (1,3,12) | (1,4,9) | (1,6,6) | (2,2,9) | (2,3,6) | (3,3,4) |
x+y+z | 38 | 21 | 16 | 14 | 13 | 13 | 11 | 10 |
Now, pondering the third info given makes sense: if the sum of their ages were 13, then the census-taker wouldn’t be able to determine their ages, since there are 2 possible options! We’ve narrowed the ages down to two options now: (1,6,6) and (2,2,9). The final information given seems unrelated to mathematics at all, so we should pay close attention to its implications. Note that the statement “My oldest daughter Annie likes dogs” implies that she has an oldest daughter i.e only one daughter is the oldest. This means that their ages can’t be 1,6 and 6 years! Thus, their ages must be 2,2 and 9 years, and the problem is solved.
Final words
To get better, focus MORE on solving problems, not just reading books. A fundamental part of training is learning various problem solving techniques and applying them on later problems. This is done by frequent problem solving. Practice regularly and try harder problems as you improve. Just reading won’t help you develop your skills—you need to solve more and more problems!
Most importantly, Never give up! Struggling with a problem doesn’t mean you’re not capable. Keep pushing forward with confidence and patience. The more you practice, starting with easier challenges and gradually tackling harder ones, the more you’ll sharpen your skills. Over time, you’ll be amazed at how you can solve even the most difficult problems!
Remember, practice makes progress! You can do it!
Also here are 2 beautiful discord community created by IOI team 2022 and 2023 Bangladesh
CP Course: (Link)
CJC Server: (Link)
Thonk & Code: (Link)
And Finally, if you want you can connect with me through
Whatsapp ; +8801942624016