Chapter 146
HomeGrandmaster-level problems aren't harder in isolation — they combine multiple techniques. You might need DP + binary search + data structures in a single problem. The skill is seeing how the pieces fit together.
Decompose
Break the problem into independent subproblems. Solve each separately, then combine. "This is DP on a tree where each node needs range queries from a segment tree."
Pattern recognition
Most hard problems are combinations of known patterns. "Minimise maximum sum" → binary search on answer. "Count permutations with constraints" → DP with combinatorics. "Query on tree path" → HLD.
Practice at the edge
Specialise in 2-3 topics you love, but maintain competency in all. Grandmasters know when to use which tool, not because they memorised every algorithm — they understood the underlying principles.
Review after every contest
Read editorials for problems you couldn't solve. Understand the solution deeply. Code it yourself without looking. This is how you turn a contest loss into lasting improvement.
These 146 chapters are a foundation — not a destination. The real learning happens when you apply them. Solve problems on Codeforces, AtCoder, and Kattis. Participate in contests. Read editorials. Teach others. Every grandmaster started exactly where you are.
// From 01-io-basics to 146-grandmaster: // - 16 phases // - 146 chapters // - C++ and Rust code throughout // - One step at a time // // The hardest step was the first one. // Everything after that is just practice.