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

ModeRaw score definitionDirection
Optimization modeMinimum y observed by any evaluate(x) call during solveLower 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.

UserSubmission scores (Accepted only)Best scoreRank
User A0.85, 0.92, 0.780.78#1
User B0.82, 0.790.79#2
User C0.810.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.

A user with no Accepted submission for a problem gets 0 pts added for that problem. Problems with no Accepted submissions across all users are excluded from ranking aggregation (they don't affect anyone's total).

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.

UserProblem 1Problem 2Problem 3TotalRank
User B
0.8596.2pt
0.40100.0pt
1.10100.0pt
296.2pt#1
User A
0.78100.0pt
0.5093.3pt
no AC193.3pt#2
User C
0.8198.3pt
no AC
1.4585.7pt
184.0pt#3