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

Every USACO round is 4 divisions × 3 problems = 12 problems total. This page indexes the December 2015 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 2015 results page on usaco.org: usaco.org/index.php?page=dec15results. Each problem links to its official statement (statements live at usaco.org/index.php?page=viewproblem2&cpid=…, cpids 567–578).

Round metadata

ContestUSACO 2015 December
WindowDecember 2015, 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, Java, Python 2.7, Python 3 (C++11 was the default at the time)
Promotion cutoffsSet per-contest by USACO; check the results page for exact thresholds.
NoteDecember 2015 is historically significant as the first contest with a Platinum division (the new top tier above Gold).

The contest at a glance

Bronze

Bronze · 3 problems

1. Fence Painting — union length of two intervals [a,b] and [c,d] on a 0–100 fence.

2. Speeding Ticket — overlay two segmentations of a 100-mile road; maximum overage of actual speed vs limit.

3. Contaminated Milk — among milks each sick cow drank before falling ill, pick the one that maximizes the count of total drinkers (worst case sick count).

Open Bronze write-up →
Silver

Silver · 3 problems

1. Switching on the Lights — BFS with retry: rooms become reachable only after their light is switched on; iterate to a fixed point.

2. High Card Wins — Elsie's order is known; greedily play Bessie's smallest card that still beats Elsie's current card.

3. Breed Counting — prefix sums over three breed indicator arrays answer Q range-count queries in O(1).

Open Silver write-up →
Gold

Gold · 3 problems

1. High Card Low Card (Gold) — first N/2 rounds reward high cards, last N/2 reward low cards; greedy per half on sorted hands.

2. Fruit Feast — reachable-fullness BFS up to T ≤ 5·10⁶ with an optional one-time halving; two passes (before/after water).

3. Bessie's Dream — shortest path on a grid with stateful tiles (smell on/off, purple sliders); 0-1 BFS over (row, col, smell) states.

Open Gold write-up →
Platinum

Platinum · 3 problems

1. Max Flow — K paths on a tree; max number of paths through any node via LCA + tree difference arrays.

2. High Card Low Card (Platinum) — Bessie may switch from high-wins to low-wins at most once; DP on sorted hands with O(N log N) merge.

3. Counting Haybales — N ≤ 200,000 with range add, range min, range sum: classic lazy-propagation segment tree.

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.