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

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

Round metadata

ContestUSACO 2020 January
WindowRoughly Jan 24–27, 2020 (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. Word Processor — greedy line wrapping: pack words left to right without exceeding width K.

2. Photoshoot — reconstruct a permutation given the sums ai+ai+1 with a1 fixed by parity logic.

3. Race — simulate Bessie's run with target speed K and energy budget, output min/max possible track length.

Open Bronze write-up →
Silver

Silver · 3 problems

1. Berry Picking — distribute berries from N trees into K baskets of equal size, maximize Bessie's K/2 smaller baskets (binary-search / enumerate basket size).

2. Loan Repayment — find max X such that a daily-floor-divide loan repayment scheme finishes in ≤ K days (binary search, decay simulation).

3. Wormhole Sort — max weight W such that edges with weight ≥ W let every cow reach its sorted position (DSU offline / binary search on edges).

Open Silver write-up →
Gold

Gold · 3 problems

1. Time is Mooney — DAG longest path with reward cv per visit minus T·t cost; DP over (day, node) bounded by 1000 days.

2. Farmer John Solves 3SUM — precompute count of unordered pairs (i,j) with ai+aj = 0 for every subarray; 2D prefix sums after an O(N²) pair sweep.

3. Springboards — min "wasted" Manhattan distance from (0,0) to (X,Y) with N springboards (DP after coordinate sort, BIT for prefix max).

Open Gold write-up →
Platinum

Platinum · 3 problems

1. Falling Portals — N planets fall at constant rates; for each i find earliest reachable lower planet via portal hops (convex hull trick / divide and conquer).

2. Cave Paintings — count ways to flood-fill a grid such that all painted regions stay connected (Kruskal-style tree DP on connected components).

3. Non-Decreasing Subsequences — for Q range queries [l,r], count non-decreasing subsequences in a[l..r] modulo a prime (segment tree of K×K matrices).

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.