Competitive Programming Learning Path (CSES)

A structured path to solve problems on CSES and improve your skills.

Back to Roadmap
Phase Main Topic Problem List Goal
1 Introductory Problems
  • Weird Algorithm
  • Missing Number
  • Repetitions
  • Increasing Array
  • Permutations
Master basic programming concepts and I/O handling.
2 Sorting and Searching
  • Distinct Numbers
  • Ferris Wheel
  • Concert Tickets
  • Sum of Two Values
Effectively apply sorting and binary search algorithms.
3 Dynamic Programming
  • Dice Combinations
  • Minimizing Coins
  • Removing Digits
  • Grid Paths
Solve optimization problems by breaking them into subproblems.
4 Graph Algorithms
  • Building Roads
  • Message Route
  • Building Teams
Master graph traversal and pathfinding algorithms.
5 Range Queries
  • Static Range Sum
  • Dynamic Range Sum
  • Range Minimum Queries
Use data structures like segment trees to handle queries efficiently.
6 Tree Algorithms
  • Subordinates
  • Tree Diameter
  • Tree Distances I
  • Company Queries I
Apply algorithms on tree data structures.
7 Mathematics
  • Common Divisors
  • Counting Divisors
  • Creating Strings
Solve problems related to number theory and combinatorics.

Core Mindsets for Competitive Programmers

1. Deconstruct and Conquer

Break every complex problem down into the smallest, simplest sub-problems. Solve simple cases first (e.g., for n=1, n=2) to build intuition before generalizing.

2. Recognize the Underlying Pattern

Most problems are variations of a known pattern or algorithm. Ask yourself: "Is this a sorting problem? A graph traversal? A DP problem in disguise?"

3. Obsess Over Constraints & Edge Cases

The constraints (e.g., N <= 10^5) are a huge hint about the required time complexity. Always consider edge cases: empty input, n=0, large values, etc.

4. Practice Deliberately

Don't just solve problems you already know how to solve. After a contest, upsolve: spend time understanding and implementing solutions for problems you couldn't solve.