About the USA Computing Olympiad
USACO is a season-long algorithmic programming contest open to anyone in the world (despite the name). Four contest rounds, four difficulty divisions, three problems per round, and a clean promotion path from Bronze through Platinum. The top US high schoolers from the Platinum round are invited to a summer training camp and selected for the four-person USA team at the International Olympiad in Informatics (IOI).
The season at a glance
USACO seasons run roughly December through March. Each round opens worldwide for ~4 days; you choose any contiguous window inside that time to compete.
| Round | Window | Notes |
|---|---|---|
| December | ~1st full weekend of December | Season opener. Lighter, more accessible problem set; lots of new competitors. |
| January | ~late January | Standard mid-season difficulty. |
| February | ~late February | Standard difficulty. Last regular round before US Open. |
| US Open | ~mid March | Finals. 5-hour contests in Gold/Platinum; results determine US team selection invitations. |
Exact dates each year are posted at usaco.org. Plan around the December round — it's the easiest to score well in and the cheapest path out of Bronze.
The four divisions
Bronze
Ad-hoc, complete search, simulation, brute force. The challenge is correctly translating a wordy problem statement into clean code, not the algorithm itself.
Time: 4 hours · Promote: typically ~750 / 1000 on at least one problem.
Silver
BFS, DFS, flood fill, binary search on the answer, prefix sums, two pointers, sorting, sliding window, basic greedy. Constraints rise to ~10⁵–10⁶.
Time: 4 hours · Promote: typically high score on at least one problem + decent on a second.
Gold
DP (1-D, 2-D, on trees, bitmask), Dijkstra, MST, topological sort, Union-Find, segment / Fenwick trees, math (modular, combinatorics), strings (KMP, hashing).
Time: 4 hours · Promote: typically near-full or full score required.
Platinum
Heavy data structures (lazy segtree, merge-sort tree, persistent, segtree beats, link-cut, suffix), heavy graph (centroid decomposition, HLD, max-flow, min-cost), DP optimizations (Knuth, Divide & Conquer, Convex Hull Trick), advanced math.
Time: 5 hours · Promote: not applicable — this is the top division. Top US scorers are invited to camp.
Scoring & submission
- Three problems per round, 1000 points each. Total possible per round: 3000.
- Each problem has 10–25 hidden test cases. Score is proportional to test cases passed.
- Submissions are unlimited and feedback is immediate for each test case (AC / WA / TLE / MLE / RE).
- Test cases are not subtask-grouped in most rounds — partial credit is per-case.
- No penalty for wrong submissions. Resubmit freely while debugging.
Allowed languages
| Language | Notes | Realistic ceiling |
|---|---|---|
| C++ (17) | The default. Fast, full STL, biggest community. | Platinum and beyond |
| Java | Viable through Gold. Constant-factor slow vs. C++; need to pay attention to I/O. | Comfortable through Gold; tight for Platinum |
| Python 3 (PyPy) | USACO grader runs PyPy. Still ~5–10× slower than C++ in practice. | Bronze and Silver are realistic; Gold is painful; Platinum effectively requires C++ |
| C, Pascal, Kotlin | Accepted but rarely used. | — |
How promotion works
If your score on a round clears that round's promotion threshold, you're moved up to the next division starting with the next round. You compete in the new division for the rest of the season; you cannot drop back. At the start of each new season, divisions are reset based on the prior year's standings.
- Bronze → Silver: roughly 750/3000 in a single round.
- Silver → Gold: roughly 750/3000.
- Gold → Platinum: historically near-full or full score (2800+/3000).
Thresholds are set per-round by the contest directors, not pre-announced. USACO publishes them after each round.
Beyond the season
- Open round (March): A 5-hour contest open to anyone, often with the toughest problems of the year.
- USACO camp (summer): Invitation-only, ~16 US high schoolers from the top Platinum scorers.
- IOI selection: Top 4 from camp form the US team at the International Olympiad in Informatics.
- Practice problems: Every past problem since 2014 is available on usaco.org as a permanent training pool.
Why USACO is great training even if you never win
- Problems are polished and well-tested — no ambiguous statements, no broken test data.
- Editorials are written for learners, not for show-off mathematicians.
- The division ladder gives you a real difficulty match all the way from "I can write a for loop" to IOI-level.
- Skills carry to Codeforces, AtCoder, ICPC, technical interviews, and any future systems work.