USACO 2022 December — the whole contest, all four divisions.

Every USACO round is 4 divisions × 3 problems = 12 problems total. This page indexes the December 2022 round end-to-end: Bronze through Platinum, with the official statement link, the key idea, complexity target, and a runnable C++ reference for each problem on the per-division pages.

Bronze (all 3) → Silver (all 3) → Gold (all 3) → Platinum (all 3) →
Authoritative source. All problem titles, constraints, and results below are taken from the official December 2022 results page on usaco.org: usaco.org/index.php?page=dec22results. Each problem links to its official statement (statements live at usaco.org/index.php?page=viewproblem2&cpid=…, cpids 1251–1262).

Round metadata

ContestUSACO 2022 December
WindowRoughly Dec 16–19, 2022 (4-day window, single 4-hour personal timer)
Length per division4 hours (Dec/Jan/Feb format; US Open is the 5-hour round)
Problems per division3
Total problems12 (Bronze 1–3, Silver 1–3, Gold 1–3, Platinum 1–3)
ScoringIOI-style partial credit, 1000 points per problem, 3000 max per division
Allowed languagesC, C++11, C++17, Java, Python 2.7, Python 3.6 (C++17 is the default for serious climbers)
Promotion cutoffsSet per-contest by USACO; check the results page for exact thresholds.

The contest at a glance

Bronze

Bronze · 3 problems

1. Cow College — pick one tuition price to maximize revenue across N cows with willingness caps (sort + sweep).

2. Feeding the Cows — minimum grass patches so every cow of each breed reaches food within K (greedy placement).

3. Reverse Engineering — decide whether an (input, output) table is consistent with any if/else program over binary variables.

Open Bronze write-up →
Silver

Silver · 3 problems

1. Barn Tree — equalize hay across a tree using moves along edges; print one optimal move sequence (DFS, post-order).

2. Circular Barn — Sprague–Grundy game on rooms with "remove 1 or prime" moves, XORed around a ring.

3. Range Reconstruction — reconstruct an array from all pairwise max−min subarray ranges (N ≤ 300, O(N²)).

Open Silver write-up →
Gold

Gold · 3 problems

1. Bribing Friends — knapsack with two currencies (moonies + cones) and per-item exchange rates (2D DP, sort by ratio).

2. Mountains — maintain "visible pairs" under point updates of heights using line-of-sight (O(N²) per update, total O(N²Q) with pruning).

3. Strongest Friendship Group — max over connected subgraphs of (size × min-degree-in-subgraph); peel lowest-degree vertex repeatedly.

Open Gold write-up →
Platinum

Platinum · 3 problems

1. Breakdown — shortest K-edge path in a complete weighted digraph under N² edge deletions; meet-in-the-middle on ⌈K/2⌉ halves, rebuild in reverse.

2. Making Friends — leaving cow makes all surviving friends pairwise friends; count new edges (priority queue + smallest-neighbour trick).

3. Palindromes — sum, over all O(N²) substrings of a binary string, of the min adjacent swaps to form a palindrome (or −1); two-pointer + BIT.

Open Platinum write-up →

How to use this set

  1. Pick your division. Open the full division page and read the three statements before writing any code.
  2. Solve P1 first, P2 if time, P3 only if you're cruising. December problem 1s are usually the cheapest points.
  3. Time-box. 4 hours total. Don't spend more than ~90 minutes on a single problem without a working subtask submission.
  4. Compare to the reference C++. Each problem on the division page has a ~30–50 line reference solution. If yours is much longer, ask why.
  5. Verify with the editorial. Official editorials are linked from each problem page on usaco.org.