Competitive Programming Path

A step-by-step competitive programming curriculum: from algorithmic foundations to expert topics. Every level contains lessons with theory, code examples, and auto-checked practice problems. If you are a complete beginner, start with one of the programming language courses first.

How the path is structured Ahead of you are 6 levels — from the foundations of algorithmics to international olympiad topics. The levels are arranged so that each builds on the previous ones: the binary search from level 2 shows up in the advanced DP of level 5, and the DSU from level 3 — in Kruskal's algorithm at level 4. So go through the levels in order and don't skip ahead. If you aren't yet writing code confidently — first take one of the programming language courses (C++, Python, Java or Go): they are in the "Learn" section right next to this path. The examples in the path's lessons can be viewed in any of those languages — the switcher is right above the code.
How to study so it actually works 1. Read the lesson and run every example. A sample input is already filled in — press "Run", then change the data or the code itself and see what changes. Understanding comes from experiments, not from reading. 2. Solve the problems after the lesson. A topic counts as learned when you have solved several problems on it yourself — without peeking at the editorial. Mark the lessons you finish to see your progress. 3. Study regularly. Three or four one-hour sessions a week beat a single eight-hour Sunday: the brain needs time to consolidate. 4. Enter competitions starting from level 2–3. A contest teaches what lessons cannot: managing time, choosing the order of problems, not panicking.
If you get stuck That is normal — everyone gets stuck. Techniques that work: go back one lesson and re-solve its problems; trace the solution on a small example on paper, by hand; set the problem aside for a day — a fresh head often sees the answer immediately. If a topic just won't click, move on and come back in a week: the next lesson's knowledge often "back-lights" the previous one. Good luck! Start with Level 1.

In this section

  1. 1
    Level 1. Algorithmic Foundations

    Algorithm complexity, implementation problems, and basic math — the foundation for everything that follows.

  2. 2
    Level 2. Sorting and Searching

    Classic techniques that appear in almost every contest problem: sorting, two pointers, prefix sums, and binary search.

  3. 3
    Level 3. Data Structures and Greedy Algorithms

    Stack, queue, sets and maps, recursion, greedy algorithms, and DSU — the toolkit for mid-level problems.

  4. 4
    Level 4. Graphs and Dynamic Programming

    Graph traversals, shortest paths, spanning trees, and your first dynamic programming problems.

  5. 5
    Level 5. Advanced Topics

    Advanced DP, segment trees, string algorithms, and number theory — the level of regional olympiad prize winners.

  6. 6
    Level 6. Expert Topics

    Flows, suffix structures, and computational geometry — international-level topics.

Доска