Skip to content
All paths

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.

4milestones7resources1lessons to revisit

The milestones

Work them in order. Each one is a real, checkable step — not a vibe.

  1. 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. 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. 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. 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.