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 contest for all four divisions; 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 h (Dec/Jan/Feb) / 5 h (US Open) · Promote: total contest score clears that round's cutoff (typically a 50-multiple in 600–850).
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 h / 5 h (US Open) · Promote: total contest score clears that round's cutoff (600–850 range).
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 h / 5 h (US Open) · Promote: total contest score clears that round's cutoff (600–850 range).
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: 4 h / 5 h (US Open) · Promote: top division. Top US scorers are invited to camp.
Scoring & submission
- 3 or 4 problems per round, 1000 points each. Contest max is 3000 or 4000 depending on problem count.
- Each problem has ~10–25 hidden test cases. Score is proportional to test cases passed (IOI-style partial credit, not ICPC-style all-or-nothing).
- 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++ (g++ 7.5, C++11 or C++17) | The default. Fast, full STL, biggest community. | Platinum and beyond |
| Java (OpenJDK 11) | Viable through Gold. Constant-factor slow vs. C++; mind I/O. | Comfortable through Gold; tight for Platinum |
| Python (CPython 2.7 / 3.6) | USACO grader runs CPython (not PyPy). ~5–10× slower than C++. | Bronze and Silver are realistic; Gold is painful; Platinum effectively requires C++ |
| C (gcc 7.5) | Accepted but rarely used (almost everyone picks C++). | — |
Current language list and exact compiler versions: usaco.org/index.php?page=instructions. Pascal and Kotlin are not on the supported list.
How promotion works
USACO has two promotion paths:
- In-contest promotion. Reach a perfect score (or the director-set in-contest threshold) and you're promoted immediately during the contest — the next division's problems unlock inside the same window.
- Post-contest promotion. If your total contest score clears that round's published cutoff, you move up starting next round and compete in the new division for the rest of the season. You cannot drop back. At the start of each season, divisions reset based on the prior year's standings.
- Bronze → Silver / Silver → Gold / Gold → Platinum: historically each cutoff has been a multiple of 50 in the 600–850 range, set per-contest by the directors.
- Concrete reference point: Dec 2024 Bronze cutoff was 700.
Thresholds are per-round and 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 2011 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.