Skip to content

Rows ​

A ranklist row (RanklistRow) is the core data structure of the entire ranklist. Each row represents a participant's performance in the contest, sorted in the expected static ranking order.

Typically, it can be understood as the data in each row of a common Ranklist/Scoreboard table, containing the participant's basic information, total score (including penalty, if applicable), and the status of each problem.

RanklistRow Structure ​

Each element in the rows array represents one row of ranking data:

json
{
  "user": { "id": "team-1", "name": "Team Alpha" },
  "score": { "value": 1, "time": [60, "min"] },
  "statuses": [
    { "result": "AC", "time": [60, "min"], "tries": 1 },
    { "result": "RJ", "tries": 3 }
  ]
}
FieldDescriptionRequired
userParticipant information✅
scoreScore✅
statusesPer-problem status (aligned with problems)✅

RankScore ​

json
{ "value": 2, "time": [150, "min"] }
FieldDescriptionRequired
valueTotal score value✅
timeTotal time❌

The semantics of value depend on the contest format:

  • ICPC format: Typically represents the number of problems solved
  • OI format: Typically represents the total score

time in ICPC format typically represents the total penalty.

RankProblemStatus (Problem Status) ​

Each element in the statuses array describes a participant's status on a specific problem.

Basic Usage ​

json
{
  "result": "AC",
  "time": [60, "min"],
  "tries": 1
}
FieldDescriptionRequired
resultResult✅
scoreScore for this problem❌
timeAcceptance time (relative to contest start)❌
triesNumber of effective submissions❌
solutionsSubmission detail list❌

Result Types (SolutionResultLite) ​

The result field uses a compact result set:

ValueMeaning
"FB"First Blood — first to solve this problem
"AC"Accepted — solved
"RJ"Rejected — not solved
"?"Frozen — result hidden during scoreboard freeze
nullNot submitted

Meaning of tries ​

tries represents the number of effective submissions. For ICPC format, it only counts effective submissions up to and including the first AC. Effective submissions are determined by the sorter's noPenaltyResults configuration: results listed in noPenaltyResults (such as CE) are not counted as effective submissions.

For example, if a participant submitted WA, CE, WA, AC for problem A, and the default noPenaltyResults includes CE, then tries is 3 (WA + WA + AC; CE is not counted).

Including Submission Details ​

The solutions array provides a complete submission history, sorted in ascending time order, and may include non-effective submissions:

json
{
  "result": "AC",
  "time": [79, "min"],
  "tries": 3,
  "solutions": [
    { "result": "WA", "time": [30, "min"] },
    { "result": "WA", "time": [55, "min"] },
    { "result": "AC", "time": [79, "min"] }
  ]
}

Relationship between result and solutions

  • result is the authoritative final result status
  • solutions is the detailed submission history, useful for replay (re-sorting) and similar features

solutions uses a more detailed result set. In addition to FB, AC, RJ, and ?, it can include specific results such as WA, TLE, CE, etc. (see SolutionResultFull enumeration).

Complete Example ​

Ranking data with two participants and two problems:

json
{
  "rows": [
    {
      "user": { "id": "team-1", "name": "Team Alpha" },
      "score": { "value": 2, "time": [269, "min"] },
      "statuses": [
        {
          "result": "FB",
          "time": [79, "min"],
          "tries": 1,
          "solutions": [
            { "result": "FB", "time": [79, "min"] }
          ]
        },
        {
          "result": "AC",
          "time": [150, "min"],
          "tries": 3,
          "solutions": [
            { "result": "WA", "time": [100, "min"] },
            { "result": "MLE", "time": [132, "min"] },
            { "result": "AC", "time": [150, "min"] }
          ]
        }
      ]
    },
    {
      "user": { "id": "team-2", "name": "Team Beta" },
      "score": { "value": 1, "time": [150, "min"] },
      "statuses": [
        {
          "result": "RJ",
          "tries": 1,
          "solutions": [
            { "result": "WA", "time": [1, "min"] }
          ]
        },
        {
          "result": "FB",
          "tries": 2,
          "solutions": [
            { "result": "CE", "time": [100, "min"] },
            { "result": "RTE", "time": [100, "min"] },
            { "result": "FB", "time": [130, "min"] }
          ]
        },
      ]
    }
  ]
}

For complete field definitions, see the RanklistRow Spec