Regulation
How HACKB evaluates your submissions: scoring per mode, submission statuses, judge sandbox details, and ranking rules. Please skim before joining a contest.
Scoring
Rankings are determined by the descending sum of per-problem raw scores normalised to 0-100 across each user's Accepted submissions.
1. Submission score (raw)
A submission's raw score is defined per evaluation mode. Raw score is a lower-is-better metric. Problem-level ranking sorts by this value directly; contest-level ranking first normalises it to 0-100 (see below).
| Mode | Raw score definition | Direction |
|---|---|---|
| Optimization mode | Minimum y observed by any evaluate(x) call during solve | Lower is better |
Terminal statuses other than Accepted (AC) — WA / RTE / TLE / MLE / IS / IE — are excluded from ranking. No score is recorded for those submissions.
2. Problem-level ranking
A user's rank on a given problem is determined by their best (smallest) raw score across all Accepted submissions to that problem. Even with multiple Accepted submissions, only the single best score counts.
Worked example
Synthetic illustration for an Optimization problem. Each user has multiple Accepted submissions with different observed minima (= raw scores), and the resulting rank.
| User | Submission scores (Accepted only) | Best score | Rank |
|---|---|---|---|
| User A | 0.85, 0.92, 0.78 | 0.78 | #1 |
| User B | 0.82, 0.79 | 0.79 | #2 |
| User C | 0.81 | 0.81 | #3 |
3. Ties (tiebreaker)
When two users have an exactly equal best score, the OLDER submission (the one that reached the score first) ranks higher. The same applies to the contest ranking: on identical total and problem count, the user with the earlier completion timestamp (the latest of their per-problem best submissions) wins.
4. Normalised score
To produce a contest-wide ranking we map each problem's raw score to a 0-100 normalised score. A simple raw-sum would give problems with larger objective magnitudes more weight in the total; we instead normalise each problem against its current running-best across all users in the contest.
Calculation
eps = max(1.0, (worst − best) / 100)
normalized = 100 × (best + eps) / (your_score + eps) (assumes best ≥ 0)best / worst are the contest's running best / worst (the minimum / maximum raw_score for that problem across all users); raw_score is your own score. The eps shift is introduced to handle problems whose best is 0.
About running-best normalisation
best and worst evolve dynamically with submissions. When a new running-best is set, every user's normalised score for that problem is recomputed, so your visible score on the leaderboard may go down during the contest.
5. Contest-level ranking
Contest rank is by descending sum of normalised scores (0 to 100 × the number of problems). Per-problem weights are uniform; no extra weighting is applied. Tiebreaker: more problems Accepted wins; further ties go to the earlier completion timestamp.
Worked example
Synthetic illustration for a 3-problem contest. Each cell shows 'raw → normalised'. User A skips problem 3 and User C skips problem 2. After normalisation, User B (who attempts all three) takes the top spot; A and C are ranked below due to their missing submissions.
| User | Problem 1 | Problem 2 | Problem 3 | Total | Rank |
|---|---|---|---|---|---|
| User B | 0.8596.2pt | 0.40100.0pt | 1.10100.0pt | 296.2pt | #1 |
| User A | 0.78100.0pt | 0.5093.3pt | no AC | 193.3pt | #2 |
| User C | 0.8198.3pt | no AC | 1.4585.7pt | 184.0pt | #3 |