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

Every USACO round is 4 divisions × 3 problems = 12 problems total. This page indexes the February 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. The whole contest shares a single theme — "Why did the cow cross the road?" — with twelve different answers.

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 February 2017 results page on usaco.org: usaco.org/index.php?page=feb17results. Each problem links to its official statement (statements live at usaco.org/index.php?page=viewproblem2&cpid=…, cpids 711–722).

Round metadata

ContestUSACO 2017 February
Window4-day window in February 2017, 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)
Theme"Why did the cow cross the road?" — all 12 problems share the joke setup with three escalating variants per division.
ScoringIOI-style partial credit, 1000 points per problem, 3000 max per division
Allowed languagesC, C++11, Java, Python 2.7, Python 3 (C++ 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. Why Did the Cow Cross the Road — count side-changes per cow across consecutive sightings; tiny simulation.

2. Why Did the Cow Cross the Road II — given a 52-char ABAB-style chord string, count pairs of cows whose chords cross on a circle.

3. Why Did the Cow Cross the Road III — single-server queue: cows arrive, are questioned one at a time, find finish time.

Open Bronze write-up →
Silver

Silver · 3 problems

1. Why Did the Cow Cross the Road — max bipartite matching between chickens (time points) and cows (time intervals) via greedy on sorted endpoints.

2. Why Did the Cow Cross the Road II — minimum number of broken signals to repair to obtain K consecutive working signals (sliding window).

3. Why Did the Cow Cross the Road III — grid with road-edges and cows; count pairs of cows in different flood-fill components.

Open Silver write-up →
Gold

Gold · 3 problems

1. Why Did the Cow Cross the Road — Dijkstra on an N×N grid where every third visited field charges a grass-eating tax.

2. Why Did the Cow Cross the Road II — LCS-style DP with the "friendly" constraint |a−b| ≤ 4, for N ≤ 1000.

3. Why Did the Cow Cross the Road III — count crossing chords on a circle: pair up letters, count inversions of second occurrences with BIT.

Open Gold write-up →
Platinum

Platinum · 3 problems

1. Why Did the Cow Cross the Road — minimize crossing pairs after one cyclic shift on either side; BIT + sweep over rotations.

2. Why Did the Cow Cross the Road II — N ≤ 105 version of friendly LCS; exploit the |a−b| ≤ 4 bandwidth with BIT on prefix maxima.

3. Why Did the Cow Cross the Road III — count pairs (a,b) with |a−b| > K that are inverted between the two orderings; offline + 2D 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. February 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.