Salam everyone,
This blog is a simple and practical guide on how to practice competitive programming, how to learn new algorithms, when to read others’ code, and how to prepare for NOI / OI-style contests. Everything here is based on practice ideas, written in easy English, with no extra theory.
1. How to Learn a New Algorithm
Do NOT learn algorithms first. Learn them when you need them.
Correct way to learn an algorithm:
- Pick a problem.
- Think seriously for about 15 minutes.
- If you are stuck, read the editorial.
- If the editorial uses a new algorithm or idea you don’t know:
- Read one article about it (USACO Guide, CP-Algorithms, or CF blog).
- Understand the idea, not memorise it.
- Implement it in that same problem.
- Move on to the next problem.
Why this works:
- You learn the algorithm in context.
- You remember when to use it, not just what it is.
- Important algorithms appear again naturally in future problems.
Do NOT:
- Study algorithms by topic first.
- Memorise without using.
- Spend many days only on theory.
2. How to Practice Daily (Exact Routine)
Main daily practice (most important)
Try to practice 90–180 minutes every day.
- Open Codeforces Problemset.
- Choose a rating range where you can solve about 30–40% of problems.
- Sort problems by newest first.
- Pick a problem.
For each problem:
- Think 15 minutes very seriously.
- If new ideas keep coming, continue.
- If you are stuck, read the editorial.
- Always implement the solution.
- Add a one-line comment: what did you learn from this problem?
Repeat 2–5 problems per day, depending on difficulty.
Extra daily thinking (optional but strong)
- Pick one harder problem.
- Think about it during:
School
- Walking
- Shower
- No coding, only thinking.
This improves idea generation.
Weekly practice
- Join every Codeforces and AtCoder contest you can.
- Virtual the contests you miss.
- If preparing for NOI, do one OI-style virtual contest per week.
3. I Can’t Implement Myself — Should I See Others’ Code?
Short answer: Yes, but only in the correct order.
Correct order:
- Try to implement the solution yourself first.
- If:
- You understand the idea,
- But your code is messy or buggy,
- Then:
- Look at one clean editorial or solution code.
- Only to understand structure.
- Close it.
- Rewrite the solution from scratch.
Never do this:
- Copy-paste code.
- Read others’ code before trying.
- Use others’ code as a shortcut.
Rule to remember: Idea from editorial is fine. Code from others is last resort. Always rewrite yourself.
4. How to Prepare for NOI
NOI is an OI-style contest:
- Long problems
- Subtasks
- Deep thinking
- Time management matters a lot
Main NOI preparation plan
1. Base practice (daily)
- Grind Codeforces problems using the 30–40% rule.
- This builds speed, idea generation, and confidence.
2. Weekly OI virtual (very important)
Once per week:
- Do one full OI-style contest.
- Treat it like a real contest:
Read all problems.
- Go for subtasks.
- Manage time carefully.
After the contest:
- Upsolve only problems you can understand.
- Focus on why subtasks work and how to extend them.
OI time management strategy (example)
For 3 problems in 4 hours:
- Read all problems (15 minutes).
- Think about each for ~15 minutes.
- Order them from easiest to hardest.
- Spend about 1 hour per problem.
- If after ~50 minutes you are still stuck:
- Implement subtasks.
- Move on.
Do not tunnel on one problem.
Key NOI skills to build
- Subtask thinking
- Partial solutions
- Brute force → optimisation
- Time allocation
- Staying calm for long contests
Final Rules to Remember
- Reading editorials is not cheating.
- Learning fast is better than solving alone.
- Implementation is mandatory.
- Live contests train independence.
- NOI needs long focus and subtask skill.
- Consistency matters more than talent.
Thanks for reading. I hope this helps you practice smarter and prepare better. Best of luck with your competitive programming journey.



