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.

RoundWindowNotes
December~1st full weekend of DecemberSeason opener. Lighter, more accessible problem set; lots of new competitors.
January~late JanuaryStandard mid-season difficulty.
February~late FebruaryStandard difficulty. Last regular round before US Open.
US Open~mid MarchFinals. 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

Entry

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).

Foundations

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).

Real CP

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).

Elite

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

The clock. Once you click the "start contest" button, your personal timer begins — 4 hours for Dec/Jan/Feb, 5 hours for US Open, same length across all four divisions. You must submit before that timer ends, even if there's still time left in the public window.

Allowed languages

LanguageNotesRealistic 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.

Switch to C++ early. Even if you started in Python, the move to C++ becomes mandatory at Gold/Platinum because of time limits. Easier to switch at Bronze/Silver than to fight the grader at Gold.

How promotion works

USACO has two promotion paths:

  1. 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.
  2. 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.

Thresholds are per-round and not pre-announced. USACO publishes them after each round.

Beyond the season

Why USACO is great training even if you never win