Competitive programming fundamentals.
Understanding Big O notation and algorithm efficiency constraints.
Basic syntax, I/O processing, and time complexity.
Direct problem translation, array manipulation, and edge cases.
Arrays, strings, sets, and maps.
Brute force techniques, nested loops, and basic recursion.
Complete search, simulation, and greedy algorithms.
Custom comparators, greedy logic proofs, and optimal substructure.
O(1) range queries, 2D prefix sums, and static array updates.
Optimizing O(N^2) loops to O(N) for contiguous subarrays.
Finding monotonic functions and searching for optimal thresholds.
Adjacency lists, matrices, and directed vs undirected graphs.
Adjacency lists, flood fill algorithms, and finding connected components.
Recursion stack, state tracking, and finding connected components.
Memoization, state transitions, knapsack, and grid paths.
Queues, shortest unweighted paths, and flood fill algorithms.
Rooted trees, leaves, parent pointers, and basic traversal.
Memoization, state transitions, and 1D/Grid paths.
0/1 Knapsack, unbounded knapsack, and subset sums.
Priority queues, edge relaxation, and weighted graphs.
Union by rank, path compression, and dynamic connectivity.
Kruskal's and Prim's algorithms for graph networks.
Directed acyclic graphs (DAGs) and dependency resolution.
Lowest Common Ancestor (LCA), diameters, and Euler tours.
Polynomial rolling hash and string matching algorithms.
Point updates and range queries in O(log N) time.