preparation guide
Competitive Programming
Solve harder problems, faster, against the clock.
Competitive programming is a sport: timed contests where you solve algorithmic puzzles as fast and correctly as you can. It sharpens exactly the muscles DSA builds — speed, precision, and a much deeper bag of techniques.
It goes well beyond interview material into number theory, combinatorics, advanced graph and string algorithms, and heavy dynamic programming. The way in is simple: pick a platform and start competing.
The milestones
Work them in order. Each one is a real, checkable step — not a vibe.
- 1
Start competing on Codeforces
Codeforces runs frequent, free, rated contests. Do the Div. 3 and Div. 4 rounds, then upsolve the problems you couldn't finish — the upsolving is where the learning is. Your rating gives you an honest, motivating signal.
- 2
Work a structured problem set
Alongside contests, grind a curated ladder so you cover every topic systematically. The CSES Problem Set is the gold standard — 300 problems, roughly sorted by topic and difficulty.
- 3
Learn the advanced algorithms
You'll meet topics beyond this site: modular arithmetic and primes, combinatorics, bitmask and tree DP, DSU on trees, Fenwick and lazy segment trees, string hashing, KMP, Z-algorithm, max-flow. CP-Algorithms is the reference for all of them.
- 4
Climb the ratings
Set concrete goals: reach Pupil, then Specialist, then Expert on Codeforces. Each colour is a real jump in what you can solve under pressure. Consistency beats intensity — a few contests a week for months.
Lessons to revisit
The foundations this path leans on hardest. A quick refresher before you dive in.
Now go do it
Reading about it is the easy part. Pick milestone one, open the first resource, and start today — momentum is the whole game.