teacher
Sign in
Track

DSA & Competitive Programming

From your first loop to Codeforces Candidate Master.

57 lessons~36 hours of lessonsTarget: Candidate Master (Codeforces 1900+)C++ · Java
Reality check
  • Reading these lessons will not raise your rating. Solving problems will. The lessons only make that practice efficient.
  • Reaching Candidate Master usually takes one to three years of steady practice. Many people take longer, a few take less. There is no shortcut and no magic trick.
  • People who get there have typically solved several hundred to over a thousand problems, most of them a little above their current level (about +100 to +300 rating).
  • Rating only moves in contests. Give contests regularly and upsolve the problems you could not finish — that is where most growth happens.
  • Plateaus of weeks or months are normal. Keep the volume up, review mistakes, and the next jump comes.
  1. Stage 10/8

    Foundations

    Read a problem carefully, write correct code, and know whether it will run in time.

    Milestone: Solve most 800–1000 rated problems on your own.

    1. 01Start HereHow this track is organised, how Codeforces works, and the practice loop that actually raises your rating.800–100015 min
    2. 02How to Think About a ProblemA repeatable routine for reading a statement, finding a brute force, spotting the pattern and checking your answer before you submit.800–100020 min
    3. 03Language Setup and Contest TemplateA C++ and Java template with fast input, multiple test cases, 64-bit integers and modular arithmetic, plus the errors that cost beginners the most submissions.800–100025 min
    4. 04Complexity and ConstraintsEstimate whether a solution will run in time from the input size, using Big-O and the rule of thumb of about 10^8 operations per second.800–120025 min
    5. 05Math Basics for ContestsParity, divisibility, remainders with negatives, gcd and lcm with Euclid, ceiling division, sums of series and digit tricks.800–120025 min
    6. 06Implementation and SimulationTurn a statement into correct code step by step, with off-by-one control, string handling and a checklist for easy problems.800–100025 min
    7. 07Sorting and Binary Search BasicsSort arrays and pairs with correct comparators, then use lower_bound and upper_bound to search sorted data in logarithmic time.800–120030 min
    8. 08STL and Java CollectionsThe standard containers in C++ (STL) and Java side by side, what each operation costs, and the pitfalls that cause wrong answers and timeouts.800–120030 min
  2. Stage 70/8

    Dynamic programming

    Name a state and a transition, then move from one-dimensional DP through knapsack to trees, masks and digits.

    Milestone: Expert (1600+) — standard DP no longer scares you.

    1. 01Dynamic Programming BasicsSpot repeated subproblems, then reuse each answer with memoization or a table. Learn to name the state, transition, base case and answer.1000–150040 min
    2. 021D DP PatternsThe four one-dimensional DP shapes you meet most - take or skip, minimum coins, counting ways, and jumps - each with state, transition, base case and answer.1200–170040 min
    3. 03DP on Grids and StringsFill a two-dimensional table where each cell depends on its neighbours - counting grid paths, longest common subsequence and edit distance.1300–180045 min
    4. 04Knapsack DPChoose items under a weight limit to maximise value - 0/1 and unbounded versions, subset sum, and the one-array trick where loop direction is the whole difference.1500–200045 min
    5. 05Longest Increasing SubsequenceThe O(n^2) DP, the O(n log n) tails array with binary search, how to reconstruct the answer, and how LIS hides inside other problems.1500–200040 min
    6. 06Tree DP and RerootingRoot the tree, compute each vertex from its children, then reuse those answers to get the result for every possible root in linear time.1300–210045 min
    7. 07Bitmask DPUse an integer's bits as a set of chosen items, so you can run DP over subsets when n is at most about 20 - assignment problems and the travelling salesman.1800–220045 min
    8. 08Digit DPCount numbers up to N that satisfy a digit property by building them one digit at a time, with a tight flag that tracks whether the prefix still matches N.1900–240040 min