USACO 2017 January — the whole contest, all four divisions.

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

Round metadata

ContestUSACO 2017 January
WindowRoughly Jan 13–16, 2017 (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 (the 2017 ruleset; C++17 came later)
Promotion cutoffsSet per-contest by USACO; check the results page for exact thresholds.

The contest at a glance

Bronze

Bronze · 3 problems

1. Don't Be Last! — among 7 named cows with milking logs, find the cow with the second-smallest total (or "Tie").

2. Hoof, Paper, Scissors — given two cows' gesture sequences over N rounds, pick the best 1-to-3 ↔ HPS mapping (try all 6 permutations).

3. Cow Tipping — minimum number of upper-left-rectangle XOR flips to clear an N×N grid (N ≤ 10); greedy bottom-up.

Open Bronze write-up →
Silver

Silver · 3 problems

1. Cow Dance Show — smallest stage size K such that an N-cow show finishes by T_max; binary search + min-heap simulation.

2. Hoof, Paper, Scissors — Silver flavor: Bessie may switch her gesture at most once over N rounds; prefix counts of H/P/S.

3. Secret Cow Code — query the N-th (N ≤ 1018) character of a string doubled-and-right-rotated forever; recurse on halves.

Open Silver write-up →
Gold

Gold · 3 problems

1. Balanced Photo — for each i, count cows on each side taller than hi; flag "unbalanced" when max > 2·min. BIT over coordinate-compressed heights.

2. Hoof, Paper, Scissors — Gold flavor: up to K ≤ 20 switches; DP[i][k][g] = best wins through round i, k switches used, current gesture g.

3. Cow Navigation — shortest instruction list that works regardless of starting orientation; BFS on (posA, dirA, posB, dirB) joint state.

Open Gold write-up →
Platinum

Platinum · 3 problems

1. Promotion Counting — for every node in a rooted tree, count descendants with higher value; offline Euler tour + Fenwick / merging indexed sets.

2. Building a Tall Barn — split K workers (up to 1012) across N floors to minimize Σ ai/ci; priority queue on marginal gain.

3. Subsequence Reversal — N ≤ 50; reverse one subsequence to maximize LIS. O(N4) DP on four monotone pointers.

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