BEGINNER β EXPERT
Competitive Programming Β· 11 Levels Β· Track Your Progress
βͺ Core topic Β Β Β·Β Β π’ Addvance Β Β Β·Β Β π΄ Low CP priority
Language & STL Foundations Β 0/29
π― Goal: Be comfortable writing small programs without overthinking
C++ Basics
- βͺ Variable declarations
- βͺ Data types
- βͺ Control flow (if-else, switch)
- βͺ Loops (for, while)
- βͺ Functions
- βͺ Input / Output (cin, cout)
- βͺ Header files
- βͺ Namespace management
- π’ References & pointers
- π’ Pass by value vs reference
- π’ Struct & class basics
- π’ Lambda functions
- π΄ OOP / Inheritance
- π΄ Advanced templates
STL Basics
- βͺ Vector
- βͺ Queue
- βͺ Stack
- βͺ Deque
- βͺ Priority queue
- βͺ Set / Multiset
- βͺ Map / Multimap
- βͺ Iterators
- βͺ sort, find, count algorithms
- π’ unordered_map / unordered_set
- π’ pair & tuple
- π’ lower_bound / upper_bound
- π’ next_permutation
- π’ accumulate / partial_sum
- π΄ list β STL linked list
Complexity & I/O Β 0/17
π― Goal: Understand exactly how fast your code runs
Complexity Theory
- βͺ Big O notation
- βͺ Time complexity estimation
- βͺ Space complexity
- βͺ Amortized analysis
- βͺ Constant factor optimization
- π’ Recognizing O from loop structure
- π’ Recursion tree analysis
- π΄ Omega notation
- π΄ Theta notation
Practical Limits
- βͺ Reading input constraints
- βͺ Memory limitations
- βͺ Stack overflow prevention
- βͺ Fast I/O (ios_base::sync)
- π’ printf / scanf vs cin speed
- π’ Reading until EOF
- π’ 10^8 ops/sec rule of thumb
- π’ Integer overflow β use long long
Basic Data Structures Β 0/18
π― Goal: Understand how data is stored and accessed efficiently
Linear Structures
- βͺ Static arrays
- βͺ Dynamic arrays
- βͺ String manipulation
- βͺ Bit manipulation
- π’ Prefix sums
- π’ Difference arrays
- π’ Sparse table
- π΄ Linked lists
- π΄ Circular buffers
Hashing
- βͺ Hash functions
- βͺ Hash tables
- βͺ Collision resolution
- βͺ Rolling hash
- βͺ Custom hash
- π’ Polynomial hashing
- π’ Anti-hack hash (random seed)
- π΄ Open addressing (theory)
- π΄ Chaining vs open addressing theory
Sorting & Searching Β 0/18
π― Goal: Master searching & sorting β a CORE CP skill
Sorting Algorithms
- βͺ Merge sort
- βͺ Quick sort
- βͺ Heap sort
- βͺ Counting sort
- π’ Radix sort
- π’ Custom comparators
- π’ Inversion count via merge sort
- π΄ Bubble sort
- π΄ Insertion sort
Searching Techniques
- βͺ Binary search
- βͺ Binary search on answer
- βͺ Ternary search
- βͺ Two pointers
- βͺ Meet in the middle
- π’ Sliding window
- π’ Fractional binary search
- π’ Parallel binary search
- π΄ Linear search
Number Theory & Math Β 0/20
π― Goal: Solve math-heavy competitive programming problems
Basics
- βͺ Prime factorization
- βͺ Sieve of Eratosthenes
- βͺ GCD
- βͺ LCM
- βͺ Modular arithmetic
- βͺ Fermat's Little Theorem
- π’ Linear sieve
- π’ Fast exponentiation (binary exp)
- π’ nCr mod p β combinatorics
- π’ Pascal's triangle
Advanced
- βͺ Modular inverse
- βͺ Euler Totient Function
- βͺ Extended Euclidean Algorithm
- βͺ Chinese Remainder Theorem
- βͺ Primality testing
- π’ Miller-Rabin primality test
- π’ Inclusion-exclusion principle
- π’ Game theory β Sprague-Grundy
- π΄ Discrete logarithm
- π΄ Pollard's rho factorization
Dynamic Programming Β 0/20
π― Goal: Learn to break hard problems into states
Foundations
- βͺ Overlapping subproblems
- βͺ Optimal substructure
- βͺ Memoization
- βͺ Tabulation
- βͺ State definition
- βͺ Base cases
- π’ DP on intervals
- π’ DP with monotone queue
- π’ Divide & conquer DP optimization
- π’ Convex Hull Trick (CHT)
Advanced DP
- βͺ Digit DP
- βͺ Bitmask DP
- βͺ Tree DP
- βͺ Knapsack variants
- βͺ LCS
- βͺ Matrix exponentiation
- π’ LIS β O(n log n)
- π’ SOS DP β Sum over subsets
- π’ Profile DP
- π’ DP on DAGs
Graph Theory Β 0/35
π― Goal: Master graph-based problems at every difficulty
Graph Basics
- βͺ Adjacency matrix
- βͺ Adjacency list
- βͺ Edge list
- βͺ DFS
- βͺ BFS
- π’ Flood fill
- π’ Cycle detection
- π’ Bipartite check
- π’ 0-1 BFS
- π’ Multi-source BFS
Shortest Path & MST
- βͺ Dijkstra
- βͺ Bellman-Ford
- βͺ Floyd-Warshall
- βͺ Prim's algorithm
- βͺ Kruskal's algorithm
- π’ SPFA (queue Bellman-Ford)
- π΄ Johnson's algorithm
Advanced Graph
- βͺ Topological sort
- βͺ Strongly connected components (Tarjan/Kosaraju)
- βͺ Articulation points
- βͺ Bridges
- βͺ LCA
- βͺ Heavy-light decomposition
- π’ Euler path / circuit
- π’ 2-SAT
- π’ Functional graph
- π’ Virtual tree
Flow & Matching
- βͺ Max Flow / Min Cut
- βͺ Dinic's algorithm
- βͺ Bipartite matching
- βͺ Hopcroft-Karp
- π’ Min-cost max flow
- π’ Hungarian algorithm
- π΄ Ford-Fulkerson β use Dinic's instead
- π΄ Edmonds-Karp β use Dinic's instead
Advanced Data Structures Β 0/18
π― Goal: Solve high-rated Codeforces problems
Segment Structures
- βͺ Segment tree
- βͺ Lazy propagation
- βͺ Fenwick tree (BIT)
- βͺ Range minimum query
- π’ Merge sort tree
- π’ Segment tree beats
- π’ 2D Fenwick tree
- π’ Persistent segment tree
Advanced Trees
- βͺ Disjoint Set Union (DSU)
- βͺ Treap
- βͺ Persistent DS
- βͺ Centroid decomposition
- π’ DSU on tree β small-to-large
- π’ Sqrt decomposition
- π’ Mo's algorithm
- π’ Offline queries
- π΄ Link-cut trees
- π΄ Treap β use policy tree instead
Strings & Geometry Β 0/23
π― Goal: Reach Specialist-level mastery
String Algorithms
- βͺ KMP
- βͺ Z Algorithm
- βͺ Rabin-Karp
- βͺ Manacher's algorithm
- βͺ Aho-Corasick
- βͺ Suffix Array
- βͺ Trie
- π’ Suffix Automaton (SAM)
- π’ Palindromic tree (Eertree)
- π’ Lyndon factorization
- π΄ Suffix Tree β use SA+LCP instead
- π΄ Lyndon factorization (rare in contests)
Geometry
- βͺ Points & vectors
- βͺ Line intersection
- βͺ Polygon area
- βͺ Convex hull
- βͺ Sweep line
- π’ Cross product / dot product
- π’ Point in polygon
- π’ Rotating calipers
- π’ Half-plane intersection
- π΄ Circle intersection
- π΄ Half-plane intersection β niche
Greedy & Proof Techniques Β 0/18
π― Goal: Think mathematically and prove your solutions
Greedy Algorithms
- βͺ Activity selection
- βͺ Interval scheduling
- βͺ Fractional knapsack
- βͺ Change making
- π’ Greedy on graphs
- π’ Earliest deadline first
- π’ Scheduling problems
- π΄ Huffman coding
- π΄ Matroid theory
Proof Techniques
- βͺ Exchange argument
- βͺ Stay ahead
- βͺ Induction
- βͺ Contradiction
- π’ Invariant method
- π’ Monovariant
- π’ Pigeonhole principle
- π’ Double counting
- π΄ Matroid theory β academic only
CP Meta-Skills (Bonus) Β 0/13
π― Goal: Often overlooked β separates good from great
Contest Strategy
- π’ Problem reading speed
- π’ Identifying problem type quickly
- π’ Time allocation per problem
- π’ Stress testing
- π’ Debugging under time pressure
- π’ Penalty awareness β CF scoring
Misc. Techniques
- π’ Coordinate compression
- π’ Offline processing
- π’ Randomization & heuristics
- π’ Constructive algorithms
- π’ Simulation problems
- π’ Interactive problems
- π’ Ternary search on unimodal functions