Where to submit code, and what each judge is actually good for.

The main judges

JudgeBest forStyle
Codeforcesrating, weekly contests, the largest problem archiveshort, clever, 2h contests
AtCoderclean statements, excellent editorials, ABC/ARC/AGC laddermathematically tidy
CSES Problem Setlearning the standard techniques in order300 curated classics
CodeCheflong challenges, Indian communitymix of short and 10-day
LeetCodeinterviews, data-structure drillssmall constraints
SPOJold classics, unusual problemsdated but deep archive
Timusrigorous, older ICPC-style problemsterse
HackerRank / HackerEarthbeginner ladders, hiring contestsgentler
KattisICPC regional and world final problemsICPC format
DMOJ / oj.uzIOI and olympiad problemsnational-olympiad archives
Library Checkerverifying library implementations against reference testspure implementation
Project Eulernumber theory and math, no time limitmath-first
GoalRoute
Learn the standard toolkitCSES from top to bottom — it maps almost exactly onto this wiki
Raise a ratingCodeforces Div 3 → Div 2, upsolving every contest
Mathematical maturityAtCoder ABC → ARC, plus Project Euler
ICPC preparationKattis + old regional sets, in 3-person 5-hour sessions
IOI preparationoj.uz, DMOJ, and the official IOI archive
InterviewsLeetCode, but only after CSES — the techniques transfer downward
Testing a libraryLibrary Checker, for exact reference outputs

Reading a verdict

VerdictUsual cause
WAwrong algorithm, an unhandled edge case, or overflow
TLEwrong complexity, or a correct complexity with a bad constant
MLErecursion depth, or an over-large array
REout-of-bounds, division by zero, stack overflow, or assert
Presentation Errortrailing whitespace or line endings (rare on modern judges)
Idleness Limit Exceededan interactive problem without a flush

TLE with the right complexity

Before rewriting the algorithm, check the constant: endl instead of '\n', unsynced I/O, map where unordered_map or sorting would do, passing containers by value, or % in an inner loop. See Optimization Tricks.

Judge-specific quirks

  • Codeforces — 64-bit is long long; %I64d is long obsolete, use cin/cout or %lld. Hacking is available in Div 3 and educational rounds.
  • AtCoder — a fixed set of language versions; the ACL (AtCoder Library) is available and worth reading.
  • CSES — tests are strong and there are no editorials, which is the point.
  • Kattis — reads until EOF in many problems; multiple test cases are common.
  • SPOJ — old compilers; some C++17 features are missing.

Practising well

  1. Upsolve. The problems you failed during a contest are worth more than new easy ones.
  2. Read editorials only after a real attempt — an hour of genuine thought, then read.
  3. Solve slightly above your rating — around +200 on Codeforces.
  4. Keep a log of what technique each failure needed; the pattern that emerges is your study list.
  5. Re-implement from memory anything you had to look up.

See also: Problem Sets · Learning Roadmap · Competitions