How to start competitive programming.
People keep asking me how to start competitive programming. This page is my answer.
In short: use the USACO Guide as your map, solve a hundred easy problems first, then learn algorithms slowly, and struggle with problems before you reach for the editorial.
Chapters
The path, in five phases
Phase 0
Pick one language and set up
One language, one editor, one way to run code. Then stop configuring and start solving.- Language
- C++ is what most competitive programmers use: it is fast, and its standard library covers most of what contests ask for. If you already know another language well, the USACO Guide explains the trade-offs.
- Setup
- Learn to read input and print output the way judges expect. That is the whole setup for now.
Phase 1
Your first 100 easy problems
Before any algorithm, a hundred easy problems.- Count your first hundred
- Codeforces problemset sort by difficulty, filter 800 to 1000
- CSES Problem Set start with Introductory Problems
- USACO Guide: Bronze
- Where
- The Codeforces problemset, sorted by difficulty, rated 800 to 1000. The CSES Introductory Problems. The USACO Guide Bronze problems.
- How
- Set a timebox. Struggle inside it. When it runs out, read the editorial. Then close the editorial and upsolve: write the solution yourself until it is accepted.
- Count
- Keep a tally. The tracker further down this page counts to a hundred for you.
Phase 2
Learn algorithms, slowly
Now follow the USACO Guide, level by level: Bronze, Silver, Gold, Platinum. One module at a time, with its problems, before the next.- The map
- The full topic map is below. Each module has its own problems; solve them before you move on.
Phase 3
Contests, and the upsolving habit
Contests show you what you can do under a clock. The learning happens after, when you upsolve what you could not finish.- Short contests
- Codeforces Div 3 and Div 2 rounds, CodeChef Starters, AtCoder Beginner Contests.
- Long challenges
- Long-format contests give you days with a problem.
- After every contest
- Upsolve the problems you did not solve.
“Even if you miss the contest make sure you upsolve the discussed problems.”
Winter Coding Camp, 2014 “Long-form learning might not have the instant gratification of quick contests, but it’s where true mastery develops.”
LinkedIn, March 2025 “I could spend days wrestling with a difficult problem, researching algorithms, and implementing different approaches.”
LinkedIn, March 2025, on the Long Challenges Phase 4
Find your people
Look for a community and, when you are ready, a camp.- Camps
- The ICPC and IOI camps I have mentored at, who runs them, and their public announcements are in the CP room.
- Where to find me
- My Codeforces profile is public. Contests I set or judge are listed in the CP room.
How to struggle well
How to struggle well
“It’s always easy once you know it, but getting there and proving it is the harder part.”
“Curiosity is the first step to learning. Even if it means getting struck by lightning, going wrong multiple times, falling. But getting up and trying what you tried again.”
A plateau can end in a single round, but only if you keep entering them. The 1200 wall
The one piece of advice
The one piece of advice
“Only Advice: Solve Problems”
The loop
Read
Read the statement twice. Work the sample by hand.
Think
Think for the timebox. Write down what you tried, even the ideas that failed.
Hint
Still stuck? Take one hint: a tag, the first line of the editorial, a friend’s nudge.
Editorial
Still stuck? Read the editorial until you understand the idea.
Upsolve
Close the editorial. Write the solution yourself until it is accepted.
Write it down
One line on the idea you missed, in your own words. Keep those notes; they’re the part you’ll reread.
The map
The map
The USACO Guide is the topic map for Phase 2. Its modules, level by level, in its own order (a few optional ones left out).
Bronze
Getting Started
Complete Search
Sorting & Sets
Additional
Silver
Sorting & Searching
Additional Topics
Gold
Dynamic Programming
Graphs
Additional Topics
Platinum
Range Queries
Questions
Questions
- How long until I’m good?
“most of you starting out get into analysis paralysis, and are looking for immediate gains or results in ratings. the answer for growth is to just keep solving problems and keep practicing.”
LinkedIn, 2024 “Don’t chase the ratings. Chase learning topics and keep challenging yourself with problems that keep bringing out the best in you.”
LinkedIn, 2024
Count your first hundred
Every accepted easy problem gets a square. Paste the link if you like, or just count. It saves in this browser only.
0 of 100 solved. Nothing counted yet.
- Problem 1: not yet
- Problem 2: not yet
- Problem 3: not yet
- Problem 4: not yet
- Problem 5: not yet
- Problem 6: not yet
- Problem 7: not yet
- Problem 8: not yet
- Problem 9: not yet
- Problem 10: not yet
- Problem 11: not yet
- Problem 12: not yet
- Problem 13: not yet
- Problem 14: not yet
- Problem 15: not yet
- Problem 16: not yet
- Problem 17: not yet
- Problem 18: not yet
- Problem 19: not yet
- Problem 20: not yet
- Problem 21: not yet
- Problem 22: not yet
- Problem 23: not yet
- Problem 24: not yet
- Problem 25: not yet
- Problem 26: not yet
- Problem 27: not yet
- Problem 28: not yet
- Problem 29: not yet
- Problem 30: not yet
- Problem 31: not yet
- Problem 32: not yet
- Problem 33: not yet
- Problem 34: not yet
- Problem 35: not yet
- Problem 36: not yet
- Problem 37: not yet
- Problem 38: not yet
- Problem 39: not yet
- Problem 40: not yet
- Problem 41: not yet
- Problem 42: not yet
- Problem 43: not yet
- Problem 44: not yet
- Problem 45: not yet
- Problem 46: not yet
- Problem 47: not yet
- Problem 48: not yet
- Problem 49: not yet
- Problem 50: not yet
- Problem 51: not yet
- Problem 52: not yet
- Problem 53: not yet
- Problem 54: not yet
- Problem 55: not yet
- Problem 56: not yet
- Problem 57: not yet
- Problem 58: not yet
- Problem 59: not yet
- Problem 60: not yet
- Problem 61: not yet
- Problem 62: not yet
- Problem 63: not yet
- Problem 64: not yet
- Problem 65: not yet
- Problem 66: not yet
- Problem 67: not yet
- Problem 68: not yet
- Problem 69: not yet
- Problem 70: not yet
- Problem 71: not yet
- Problem 72: not yet
- Problem 73: not yet
- Problem 74: not yet
- Problem 75: not yet
- Problem 76: not yet
- Problem 77: not yet
- Problem 78: not yet
- Problem 79: not yet
- Problem 80: not yet
- Problem 81: not yet
- Problem 82: not yet
- Problem 83: not yet
- Problem 84: not yet
- Problem 85: not yet
- Problem 86: not yet
- Problem 87: not yet
- Problem 88: not yet
- Problem 89: not yet
- Problem 90: not yet
- Problem 91: not yet
- Problem 92: not yet
- Problem 93: not yet
- Problem 94: not yet
- Problem 95: not yet
- Problem 96: not yet
- Problem 97: not yet
- Problem 98: not yet
- Problem 99: not yet
- Problem 100: not yet