Appearance
Atman's Study Plan -- CF 1100 --> 2100
Genre note. This file is a coaching document, not a reference. It is written as a direct second-person plan for the notebook's primary user. The schedule, rhythm, and phase milestones generalize to any 1100→2100 trajectory; the voice is intentionally personal. Read it as a worked example of how to structure a 32-week progression — the structure transfers even if the addressee does not.
"The best competitive programmer isn't the one who knows the most algorithms.It's the one who practiced the right things in the right order."
3 hours a day, 5 days a week, one step at a time. No shortcuts, no rushing, no skipping practice. Trust the process — every week the problems get a little easier, and that feeling compounds.
Quick Revisit
- Structured 32-week progression from CF 1100 to 2100, 15 hours/week.
- Four phases: Foundations (W1-7), Core Skills (W8-15), Intermediate (W16-24), Advanced (W25-32).
- Coaching tone — personalized to Atman, but the rhythm transfers.
Contents
- How This Plan Works
- The Rules
- Mental Traps
- Phase 1: Foundations (CF 1100 --> 1400)
- Phase 2: Core Skills (CF 1400 --> 1700)
- Phase 3: Intermediate (CF 1700 --> 1900)
- Phase 4: Advanced (CF 1900 --> 2100+)
- After Week 32 -- What's Next?
- What the Code Won't Teach You
- Emergency Protocols
- Quick Reference: Virtual Contest Schedule
- Self-Test
How This Plan Works
Time budget: 3 hours/day x 5 weekdays = 15 hours/week
Weekly rhythm:
| Day | Type | Structure |
|---|---|---|
| Monday | New Topic | 1h read concept --> 2h solve problems from that topic |
| Tuesday | Practice | 30m review yesterday's topic --> 2.5h problem solving |
| Wednesday | New Topic | 1h read concept --> 2h solve problems from that topic |
| Thursday | Practice | 30m review --> 1h virtual contest --> 1.5h upsolve |
| Friday | New Topic | 1h read concept --> 2h solve problems from that topic |
How to study a topic (1 hour):
- Read Layers 1-3 (Pain --> Key Insight --> Visual Walkthrough) -- 20 min
- Read the code, type it out yourself (don't copy-paste while learning) -- 15 min
- Read Layers 4-5 (Invariant --> When to Reach) + Patterns -- 15 min
- Glance at Cheat Sheet + Gotchas -- 10 min
How to practice (2 hours):
- Start with the easiest 2-3 practice problems from the file -- 60 min
- If stuck >20 min on a problem, read the editorial, then re-solve from scratch
- Attempt 1 medium problem -- 40 min
- Review: write down what you learned in 2-3 sentences -- 20 min
Weekends: Rest. Seriously. Your brain consolidates while you sleep and relax. If you want to do something, do a virtual contest for fun. No new topics.
The Rules
- Never skip practice for more concepts. Understanding without practice = forgetting.
- If a topic doesn't click, spend an extra day on it. The plan has flex weeks built in.
- Do at least 1 virtual contest per week (Thursday). Start with Div 2 A-C.
- Track your solves. After each practice session, note: problem name, whether you solved it, what technique it used, what you learned.
- Review weekly. Every Friday evening, skim through the week's cheat sheets. Can you recall the key insight for each topic?
- Be patient with yourself. Rating plateaus are normal. They mean you're about to break through.
Mental Traps
Watch out for these -- they look like progress but they're not.
"More is better." 10 problems analyzed deeply beat 30 problems skimmed. After every wrong answer, ask: what was the trigger I missed? Grinding without reflection is comfortable but slow.
"I need to learn X before I can start Y." Prerequisites matter, but perfectionism on prerequisites is procrastination. You can start HLD with basic DFS and learn the rest in context. Don't polish the foundation forever.
"I'm progressing because I'm solving problems." Only if those problems are above your current level and require new ideas. Solving 10 problems at your rating is maintenance, not growth. Ask: did I learn something new?
"A good plan will make me better." Plans don't improve you -- executing them does. The uncomfortable hour stuck on a hard problem is the actual investment. The plan is just the schedule.
STUDY PLAN TIMELINE (32 WEEKS)
====================================================================
Phase 1: Foundations Phase 2: Core Skills
CF 1100 --> 1400 CF 1400 --> 1700
+-----------------------+ +----------------------------------+
|W1 W2 W3 W4 W5 W6| W7 |W8 W9 W10 W11 W12 W13 W14 | W15
|arr map srt win src grp| [REST] |mon rng grd var NT grp DP | [REST]
|bit tre BS pfx mth BFS| |stk seg con tern cmb dij knap |
+-----------------------+ +----------------------------------+
^ Start here ^ Div 2 A+B consistent
Phase 3: Intermediate Phase 4: Advanced
CF 1700 --> 1900 CF 1900 --> 2100+
+----------------------------+ +----------------------------------+
|W16 W17 W18 W19 W20 W21 | |W25 W26 W27 W28 W29 W30 W31 | W32
|lzy swp MTM mat SP LCA | |trp SCC HLD CHT SA SAM CDQ | [REST]
|W22 W23 W24 | |bip cen flw DnC aho pal PBS FFT |
|bmk KMP [REST] | +----------------------------------+
+----------------------------+ ^ Div 1 B/C reachable
^ Div 2 C in 40 min
Legend: [REST] = consolidation week (no new topics)Phase 1: Foundations (CF 1100 --> 1400)
Goal: Build a rock-solid foundation. After this phase, you should be able tosolve Div 2 A and B consistently, and sometimes C.
Week 1 -- Arrays, Bits, and Basic Structures
| Day | Topic File | Focus |
|---|---|---|
| Mon | arrays-and-strings | Vectors, string ops, iteration patterns |
| Tue | Practice | Solve 4-5 CF 800-1000 implementation problems |
| Wed | bit-manipulation | Binary basics, AND/OR/XOR, checking bits |
| Thu | Practice + Virtual | Div 2 virtual contest (focus on A+B speed) |
| Fri | linked-list-basics + stack-queue-deque | Quick read (linked lists are rare in CP), stack/queue deeply |
[read] Also read this week: cf-tips-and-workflow, common-templates
Week 2 -- Maps, Trees, and Ordered Structures
| Day | Topic File | Focus |
|---|---|---|
| Mon | hash-map-and-unordered-map | Frequency counting, O(1) lookup |
| Tue | Practice | Solve 4-5 problems using maps (frequency, counting, lookup) |
| Wed | tree-basics | Tree terminology, traversals |
| Thu | Practice + Virtual | Div 2 virtual contest |
| Fri | set-and-multiset + priority-queue-and-heaps | Ordered containers, heaps |
Week 3 -- Sorting, Searching, and Two Pointers
| Day | Topic File | Focus |
|---|---|---|
| Mon | sorting-and-searching | Custom sort, lower_bound, upper_bound |
| Tue | Practice | Sort-based problems (CF 800-1100) |
| Wed | binary-search | Binary search on answer -- this is HUGE |
| Thu | Practice + Virtual | Div 2 virtual, try to solve C |
| Fri | two-pointers | Opposite ends, same direction, sorted arrays |
Week 4 -- Windows and Prefix Sums
| Day | Topic File | Focus |
|---|---|---|
| Mon | sliding-window | Fixed window, variable window, shrinking |
| Tue | Practice | Sliding window + two-pointer problems (CF 1100-1300) |
| Wed | prefix-sums | 1D and 2D prefix sums -- another game-changer |
| Thu | Practice + Virtual | Div 2 virtual contest |
| Fri | difference-arrays | Range updates in O(1), reconstruct with prefix sum |
Week 5 -- Search, Math, and Graphs Begin
| Day | Topic File | Focus |
|---|---|---|
| Mon | complete-search | Backtracking, pruning, when brute force is enough |
| Tue | Practice | Brute force + prefix sum problems (CF 1000-1200) |
| Wed | math-fundamentals | GCD, modular arithmetic, fast exponentiation |
| Thu | Practice + Virtual | Div 2 virtual contest |
| Fri | graph-representation | Adjacency list -- how to read and store graphs |
Week 6 -- BFS, DFS, and Intro DP
| Day | Topic File | Focus |
|---|---|---|
| Mon | bfs | Shortest path in unweighted graphs, 0-1 BFS |
| Tue | Practice | BFS problems -- grid traversal, shortest path (CF 1100-1300) |
| Wed | dfs-and-tree-dfs | DFS, connected components, tree traversal |
| Thu | Practice + Virtual | Div 2 virtual contest |
| Fri | dp-intro-1d | Your first DP! Fibonacci, coin change, LIS |
Week 7 -- (rest) Consolidation Week
No new topics. This week is for catching up, reinforcing, and building confidence.
| Day | Activity |
|---|---|
| Mon | Re-solve 5 problems you struggled with in Weeks 1-6 |
| Tue | Virtual contest (Div 2) -- aim for A+B in 30 min, attempt C |
| Wed | Review all cheat sheets from Phase 1. Make flashcards for key insights |
| Thu | Virtual contest (Div 2) -- try a different round |
| Fri | Solve 3-4 CF 1200-1300 problems mixing all techniques learned so far |
**** Milestone Check:** You should now be solving Div 2 A+B consistently. CF rating target: ~1300-1400. If you're not there yet, that's okay -- repeat Week 7 until you feel solid. No rushing.
Phase 2: Core Skills (CF 1400 --> 1700)
Goal: Add power structures and algorithmic thinking. After this phase,you'll crack Div 2 C regularly and sometimes D.
Week 8 -- Monotonic Structures
| Day | Topic File | Focus |
|---|---|---|
| Mon | monotonic-stack | Next greater element pattern |
| Tue | Practice | Monotonic stack problems (CF 1200-1400) |
| Wed | monotonic-queue | Sliding window min/max |
| Thu | Practice + Virtual | Div 2 virtual contest |
| Fri | union-find-dsu | Path compression, union by rank |
Week 9 -- Range Query Structures
| Day | Topic File | Focus |
|---|---|---|
| Mon | binary-indexed-tree-fenwick | BIT -- point update, prefix query |
| Tue | Practice | BIT problems (CF 1300-1500) |
| Wed | segment-tree | The Swiss Army knife of CP |
| Thu | Practice + Virtual | Segment tree problems + virtual contest |
| Fri | trie | Prefix trie and XOR trie |
Week 10 -- Greedy and Counting
| Day | Topic File | Focus |
|---|---|---|
| Mon | greedy | Exchange arguments, sorting criteria |
| Tue | Practice | Greedy problems (CF 1200-1500). Try to prove why greedy works |
| Wed | contribution-technique | Count per-element instead of per-subset |
| Thu | Practice + Virtual | Div 2 virtual contest |
| Fri | divide-and-conquer | Merge sort, inversions, D&C paradigm |
[read] Read this week: dp-vs-greedy-guide
Week 11 -- Search Variants and Compression
| Day | Topic File | Focus |
|---|---|---|
| Mon | ternary-search | Unimodal functions |
| Tue | Practice | Binary search + ternary search problems (CF 1300-1500) |
| Wed | coordinate-compression | Large values --> small indices |
| Thu | Practice + Virtual | Div 2 virtual contest |
| Fri | randomization-techniques | Anti-hack, random hashing, probabilistic methods |
Week 12 -- Number Theory and Combinatorics
| Day | Topic File | Focus |
|---|---|---|
| Mon | number-theory | Sieve, factorization, totient |
| Tue | Practice | Number theory problems (CF 1300-1500) |
| Wed | combinatorics-basics | nCr, Pascal's triangle, stars and bars |
| Thu | Practice + Virtual | Div 2 virtual contest |
| Fri | catalan-numbers | Balanced parentheses, binary trees |
Week 13 -- Graphs Level 2 + More DP
| Day | Topic File | Focus |
|---|---|---|
| Mon | topological-sort | DAG ordering, Kahn's algorithm |
| Tue | Practice | Toposort + DSU problems (CF 1300-1500) |
| Wed | dijkstra | Shortest paths with non-negative weights |
| Thu | Practice + Virtual | Div 2 virtual contest |
| Fri | mst-kruskal | Minimum spanning tree |
Week 14 -- DP Deepening
| Day | Topic File | Focus |
|---|---|---|
| Mon | dp-knapsack | 0/1, unbounded, bounded |
| Tue | Practice | Knapsack variants (CF 1300-1600) |
| Wed | dp-2d-sequence | LCS, edit distance, grid paths |
| Thu | Practice + Virtual | DP problems + virtual contest |
| Fri | dp-thinking-framework | Meta-guide: state design, 6 archetypes |
[read] Also read: bfs-vs-dfs-guide
Week 15 -- Strings and Offline + Consolidation
| Day | Topic File | Focus |
|---|---|---|
| Mon | string-hashing | Polynomial hashing |
| Tue | Practice | String hashing problems (CF 1400-1600) |
| Wed | offline-queries | Sorting queries for efficiency |
| Thu | (rest) Review | Re-read cheat sheets for Weeks 8-14. Flashcard the key insights |
| Fri | (rest) Mixed practice | Solve 4-5 problems (CF 1400-1500) mixing ALL Phase 2 techniques |
**** Milestone Check:** You should be cracking Div 2 C in ~40 minutes. CF rating target: ~1600-1700. You're in the top 10% now. Take a deep breath. You've come far.
Phase 3: Intermediate (CF 1700 --> 1900)
Goal: Add advanced structures and harder algorithmic paradigms. Problems startrequiring creative combinations of techniques. After this phase, Div 2 D becomesreachable and you can start placing in Div 1.
Week 16 -- Advanced Range Queries
| Day | Topic File | Focus |
|---|---|---|
| Mon | sparse-table-rmq | O(1) static range queries |
| Tue | Practice | Range query problems mixing BIT/seg tree/sparse table |
| Wed | segment-tree-lazy | Range updates + range queries |
| Thu | Practice + Virtual | Lazy seg tree problems + virtual contest |
| Fri | policy-based-ds | GNU PBDS ordered set |
Week 17 -- Sweep Line and Construction
| Day | Topic File | Focus |
|---|---|---|
| Mon | sweep-line | Event-based, dimension reduction |
| Tue | Practice | Sweep line + coordinate compression problems (CF 1500-1700) |
| Wed | constructive-algorithms | Building valid solutions |
| Thu | Practice + Virtual | Constructive problems + virtual contest |
| Fri | interactive-problems | Query-based problems with judge |
Week 18 -- MITM and Math
| Day | Topic File | Focus |
|---|---|---|
| Mon | meet-in-the-middle | Split-half enumeration |
| Tue | Practice | MITM + brute force optimization (CF 1600-1800) |
| Wed | inclusion-exclusion | PIE, derangements, coprime counting |
| Thu | Practice + Virtual | Counting problems + virtual contest |
| Fri | game-theory-nim | Sprague-Grundy, nim values |
Week 19 -- Probability and Matrices
| Day | Topic File | Focus |
|---|---|---|
| Mon | probability | Expected value, linearity |
| Tue | Practice | Expected value problems (CF 1500-1800) |
| Wed | matrix-exponentiation | Linear recurrences in O(k^3 log n) |
| Thu | Practice + Virtual | Matrix exp problems + virtual contest |
| Fri | (rest) Review | Catch up on anything from Weeks 16-18 |
Week 20 -- Shortest Paths Deep Dive
| Day | Topic File | Focus |
|---|---|---|
| Mon | bellman-ford | Negative weights, SPFA |
| Tue | Practice | Shortest path problems mixing Dijkstra/BF/Floyd |
| Wed | floyd-warshall + mst-prim | All-pairs + Prim's MST |
| Thu | Practice + Virtual | Graph problems + virtual contest |
| Fri | bridges-and-articulation-points | Cut vertices and bridges |
Week 21 -- Tree Algorithms and LCA
| Day | Topic File | Focus |
|---|---|---|
| Mon | euler-tour-and-lca | Flatten tree, LCA via binary lifting |
| Tue | Practice | LCA + tree problems (CF 1600-1800) |
| Wed | functional-graphs + euler-path | Successor graphs, Euler circuits |
| Thu | Practice + Virtual | Virtual contest |
| Fri | dp-on-trees | Subtree DP, rerooting |
Week 22 -- Bitmask and Interval DP
| Day | Topic File | Focus |
|---|---|---|
| Mon | dp-bitmask | Bitmask DP, TSP |
| Tue | Practice | Bitmask DP problems (CF 1600-1800) |
| Wed | dp-interval | Range DP on [l,r] |
| Thu | Practice + Virtual | DP contest mix |
| Fri | dp-digit | Digit DP -- counting numbers with constraints |
Week 23 -- Strings and Sqrt
| Day | Topic File | Focus |
|---|---|---|
| Mon | kmp-and-z-function | Pattern matching |
| Tue | Practice | String matching problems (CF 1500-1700) |
| Wed | manacher | All palindromic substrings |
| Thu | Practice + Virtual | String problems + virtual contest |
| Fri | sqrt-decomposition | Block decomposition |
Week 24 -- Geometry + Consolidation
| Day | Topic File | Focus |
|---|---|---|
| Mon | geometry-basics | Cross product, convex hull |
| Tue | Practice | Geometry problems (CF 1500-1700) |
| Wed | (rest) Mixed practice | Solve 4-5 problems (CF 1700-1800) mixing Phase 3 techniques |
| Thu | (rest) Virtual contest | Div 1 virtual contest -- just try it, even if it's hard |
| Fri | (rest) Review | Re-read all Phase 3 cheat sheets. Update flashcards |
[read] Read this week: debugging-under-pressure, data-structure-selection-guide
**** Milestone Check:** You should be solving Div 2 D sometimes. CF rating target: ~1800-1900. You're purple/about to be purple. You're in the top 3% of all competitive programmers. Genuinely impressive.
Phase 4: Advanced (CF 1900 --> 2100+)
Goal: Master the advanced toolkit. Problems at this level require deep insight,creative combinations, and flawless implementation. You're not just learningalgorithms anymore -- you're learning to think like an expert.
Week 25 -- Advanced Trees
| Day | Topic File | Focus |
|---|---|---|
| Mon | cartesian-tree | Treap: BST + heap combined |
| Tue | Practice | Treap problems (CF 1700-1900) |
| Wed | binary-indexed-tree-2d | 2D Fenwick tree |
| Thu | Practice + Virtual | Range query problems + virtual contest |
| Fri | persistent-segment-tree | Versioned segment tree, k-th on paths |
Week 26 -- Advanced Graphs I
| Day | Topic File | Focus |
|---|---|---|
| Mon | scc-and-2sat | Strongly connected components, 2-SAT |
| Tue | Practice | SCC/2-SAT problems (CF 1800-2000) |
| Wed | heavy-light-decomposition | Path queries on trees |
| Thu | Practice + Virtual | HLD problems + virtual contest |
| Fri | dsu-on-tree | Small-to-large merging |
Week 27 -- Advanced Graphs II
| Day | Topic File | Focus |
|---|---|---|
| Mon | centroid-decomposition | Divide tree by centroids |
| Tue | Practice | Centroid decomp + DSU-on-tree problems (CF 1800-2000) |
| Wed | flow-intro | Max-flow, min-cut, Dinic's |
| Thu | Practice + Virtual | Flow problems + virtual contest |
| Fri | bipartite-matching + min-cost-flow | Matching and MCMF |
Week 28 -- DP Optimizations
| Day | Topic File | Focus |
|---|---|---|
| Mon | dp-convex-hull-trick | CHT, Li Chao tree |
| Tue | Practice | CHT problems (CF 1800-2100) |
| Wed | dp-divide-and-conquer-optimization | Monotone minima |
| Thu | Practice + Virtual | DP optimization problems + virtual contest |
| Fri | dp-sos | Sum over subsets |
Week 29 -- DP Mastery + Advanced Strings I
| Day | Topic File | Focus |
|---|---|---|
| Mon | dp-slope-trick | Convex DP via priority queue of slopes |
| Tue | Practice | DP optimization problems (CF 1900-2100) |
| Wed | suffix-array | Sorted suffixes + LCP |
| Thu | Practice + Virtual | String problems + virtual contest |
| Fri | aho-corasick | Multi-pattern matching |
Week 30 -- Advanced Strings II + Offline
| Day | Topic File | Focus |
|---|---|---|
| Mon | suffix-automaton | All substrings in O(n) |
| Tue | Practice | Suffix automaton/array problems (CF 1900-2100) |
| Wed | palindromic-tree | Distinct palindromic substrings |
| Thu | Practice + Virtual | Virtual contest (Div 1) |
| Fri | mo-algorithm | Offline range queries |
Week 31 -- Offline Mastery + FFT
| Day | Topic File | Focus |
|---|---|---|
| Mon | cdq-divide-and-conquer | CDQ D&C for multidimensional |
| Tue | Practice | Offline technique problems (CF 1900-2100) |
| Wed | parallel-binary-search | Batched threshold queries |
| Thu | Practice + Virtual | Virtual contest (Div 1) |
| Fri | fft-ntt | Polynomial multiplication |
Week 32 -- Final Topics + Grand Consolidation
| Day | Topic File | Focus |
|---|---|---|
| Mon | gaussian-elimination | Systems of equations, XOR basis |
| Tue | Practice | Math problems mixing FFT, matrices, Gauss (CF 1900-2100) |
| Wed | linked-list-contest | Contest tricks (quick read) |
| Thu | (rest) Virtual contest | Div 1 virtual contest -- go for it! |
| Fri | (rest) Grand review | Skim ALL cheat sheets. You've covered everything. Celebrate. |
**** Milestone Check:** You can solve Div 1 B/C. Div 2 D is routine. CF rating target: ~2000-2100. You're Candidate Master. You started at 1100. Look how far you've come.
After Week 32 -- What's Next?
You've covered the entire notebook. Now it's about depth, not breadth:
- Contest, contest, contest. Do 2-3 live Codeforces rounds per week.
- Upsolve religiously. After every contest, solve the problems you missed.
- Revisit weak areas. Look at your solve log. Which technique do you fail on most? Re-read that file and do 10 more problems.
- Try harder contests. Div 1, Educational rounds, AtCoder ABC/ARC.
- Teach someone. Explaining a concept forces you to truly understand it.
What the Code Won't Teach You
- Reading speed matters. At CF 1700+, misreading the problem wastes 20-40 minutes. Practice parsing complex problem statements deliberately.
- Time estimation is a skill. Knowing when to abandon an approach (after 15 min stuck) vs. push through (you're close) separates 1600 from 1900.
- Contest psychology is real. Panic after one WA, tilting after a bad start, fear of submitting -- these cost more rating points than missing algorithms.
- Upsolving is where real learning happens. The contest gives you problems; upsolving gives you skills.
- Communication with yourself. Write brief notes after each session: what went well, what didn't, one thing to try differently next time.
WEEKLY PROGRESS FLOWCHART
+--------------+
| Start Week |
+------+-------+
|
v
+--------------+ Yes +--------------------+
| New topic +----------->| Read Layers 1-5 |
| scheduled? | | Type out the code |
+------+-------+ | Study 1 hour |
No | +---------+----------+
| |
v v
+--------------+ +--------------------+
| Consolidation| | Practice 2 hours |
| week: review | | (3-5 problems, |
| & re-solve | | rated current+100)|
+------+-------+ +---------+----------+
| |
v v
+----------------------------------------------+
| End of week: self-assess |
| * Did I solve problems above my level? |
| * Which technique tripped me up? |
| * Am I ready to advance or repeat? |
+------------------+---------------------------+
|
+---------+---------+
v v
+-----------+ +---------------+
| Ready: | | Not ready: |
| Next | | Repeat week |
| week | | or flex week |
+-----------+ +---------------+Emergency Protocols
"I'm behind schedule"
That's okay. The flex weeks (7, 15, 24, 32) exist for exactly this. Skip the consolidation activities and use them to catch up. If you're more than 2 weeks behind, just continue from where you are -- don't try to rush through skipped material.
"I don't understand this topic at all"
- Re-read Layers 1-3 of the file.
- Watch a YouTube video on the same topic (e.g., Errichto, William Lin, Colin Galen).
- Solve the easiest practice problem with editorial help.
- Try the same problem again from scratch without looking.
- If still stuck, move on and come back to it next consolidation week.
"My rating isn't going up"
Rating plateaus at 1400, 1600, and 1900 are extremely common. They usually last 2-4 weeks. Keep practicing. The breakthrough comes when your brain finally connects the patterns. Plateaus mean you're absorbing -- the rating jump is coming.
"I missed a week"
No guilt. Pick up where you left off. Consistency over perfection.
Quick Reference: Virtual Contest Schedule
| Week | Contest Type | What to Focus On |
|---|---|---|
| 1-7 | Div 2 | Solve A+B fast, attempt C |
| 8-15 | Div 2 | Solve A+B+C, attempt D |
| 16-20 | Div 2 + Educational | Solve A+B+C, crack D regularly |
| 21-24 | Div 2 + Div 1 (attempt) | D consistently, sometimes E |
| 25-32 | Div 1 + Div 2 | Full Div 2 solves, Div 1 B/C |
Self-Test
Before moving on, check these off honestly:
- [ ] I have identified my 3 weakest problem categories from my last 20 contests
- [ ] I can describe my weekly study rhythm without looking at this document
- [ ] I have a tracking system (spreadsheet, text file, or notebook) for solved problems
- [ ] I have scheduled my next virtual contest with a specific day, time, and round
- [ ] I know the difference between practice (deliberate, focused) and performance (rated contests) and I do both
"It's not about being the fastest learner. It's about being the one who doesn't stop."
The Underlying Lesson
This plan is not about following a rigid schedule — it is about deliberate sequencing. Each phase builds on the last. Skipping to "cool" algorithms before nailing implementation speed and greedy thinking is like studying calculus before you can do arithmetic quickly. The boring foundations phase is where rating gains actually compound.
Open this file on Sunday evening when planning the week. Use it to pick which topics to drill, which virtual contests to run, and to reality-check whether you are advancing or spinning wheels.
Before You Code Checklist
- [ ] Check your phase -- based on current CF rating, are you working on the right topics? If you're 1300 and studying segment trees, stop.
- [ ] Schedule 2+ virtual contests this week -- practice without rating pressure, but treat them as real (no looking up solutions mid-contest).
- [ ] Pick 3 upsolve targets from your last contest -- problems you couldn't solve in time but are within one difficulty tier of your level.
- [ ] Log what you learned today -- even one sentence. "Learned that multiset erase(x) removes ALL copies" counts. Unlogged practice fades.
- [ ] Honest self-assessment -- did you actually struggle with a problem today, or did you only solve easy ones? Growth requires discomfort.
What Would You Do If...?
Your rating has been flat at 1450 for 6 weeks despite consistent practice. Do you change your study plan, increase volume, or analyze what types of problems you're losing rating on?
You can solve Div 2 A-B consistently but always time out on C. Is the bottleneck knowledge (don't know the algorithm), speed (too slow at implementation), or problem-solving (can't find the approach)? How do you diagnose which one?
A friend who started at the same time is now 300 rating points ahead of you. How do you use this information productively instead of letting it demotivate you?
The Mistake That Teaches
Week 8 of the plan. You've been grinding Div 2 C problems for two weeks straight. Your solve rate is improving -- 60% in virtual contests. But your rating dropped by 50 points across 3 real contests. What happened?
You review your contest logs. Pattern: you're solving C but taking 55+ minutes, leaving no time for D. Meanwhile, your A+B time is 25 minutes -- it should be 12. You've been optimizing the wrong thing.
The lesson: Rating = problems solved x speed. Improving solve rate on hard problems matters less than improving speed on problems you already know how to solve. Phase 1's emphasis on implementation speed isn't boring -- it's the foundation everything else stands on. Track your A+B time. If it's above 15 minutes in Div 2, that's where your rating is leaking.
The shortest summary of the plan: train the phase you're in, not the phase you wish you were in. The ladder has rungs for a reason.
See also: CF Tips and Workflow | Practice Ladders | Mock Contests | Reflections