FAQ

In short, each participant has a performance value for each contest that they participated in. The list of performance values is then sorted in non-increasing order and a weighted sum is taken, where bigger weights are assigned to earlier items in the list.

In particular, the rating system has the following characteristics.

  • The rating of a user will never decrease. Therefore, it is never optimal to skip a contest as each contest will contribute a non-negative rating delta.
  • The performance of a user in a contest does not depend only on the rank, but also on the score, which encourages users to widen the gap between them and the next lower participant and shorten the gap between them and the next higher participant.

Performance Calculation

For a user uu and contest cc, define:

  • score(u,c)\mathrm{score}(u, c) as the score of the user. In ICPC-style contests, this is the number of solves; in IOI-style contests, this is the raw score.
  • penalty(u,c)\mathrm{penalty}(u, c) as the penalty of the user. In IOI-style contests, this value is always 00.
  • rank(u,c)\mathrm{rank}(u, c) as the rank of the user, which is defined as 11 plus the number of users with larger score or equal score and smaller penalty.

Additionally, let U(c)U(c) be the set of users participating in contest cc.

Each user is assigned a performance value for each contest, which is a real number in the range [0,4000][0, 4\,000]. The performance value for user uu and contest cc, perf(u,c)\mathrm{perf}(u, c), is calculated as

perf(u,c)=4000×U(c)rank(u,c)+240+1U(c)+240×score(u,c)maxvU(c)score(v,c).\mathrm{perf}(u, c) = 4\,000 \times \frac{|U(c)| - \mathrm{rank}(u, c) + 240 + 1}{|U(c)| + 240} \times \frac{\mathrm{score}(u, c)}{\max_{v \in U(c)} \mathrm{score}(v, c)}.

In other words, the best participant will always have a performance of 40004\,000, while the other participants get a fraction of the performance based on their rank and score.

External Participation

If during a contest, a user participates in another training or competition that results in the user unable to join the contest, the user is considered to have an external participation.

Let PP be the list of length nn of the user's actual performances, sorted in non-increasing order. The ii-th external participation (i1i \ge 1) is considered to have a performance equal to Pi(i+1)/2P_{i (i + 1) / 2} if i(i+1)/2ni (i + 1) / 2 \le n, and 00 otherwise.

Rating Calculation

For a user uu, let PP^\prime be the list of their performances in this season after accounting for external participation, sorted in non-increasing order. Let kk be the length of PP^\prime. The weights of the performances, Wi (1ik)W_i \ (1\le i \le k), is a capped geometric progression as follows:

Wi=max(0.01,0.1(0.95)i1)W_i = \max \left( 0.01, 0.1 (0.95)^{i-1} \right)

In particular, the geometric progression will be capped at 0.010.01 starting at the 4646-th greatest performance of the user.

The rating of the user for this season, say ss, is then calculated as

ratings(u)=seasonReset(ratings1(u))+i=1k(Wi×Pi),\mathrm{rating}_s(u) = \mathrm{seasonReset}(\mathrm{rating}_{s-1}(u)) + \sum_{i = 1}^k (W_i \times P^\prime_i),

where rating0(u)=0\mathrm{rating}_0(u) = 0 for all uu, and seasonReset\mathrm{seasonReset} is the season reset function defined below.

Seasons and Season Reset

To maintain the relevance of ratings, the contests are split into (roughly annual) seasons. A new season starts just after the new members from JollyBasic get promoted to Jollybee Intermediate. Users that have participated in the previous season will get an additive bonus to their rating. This bonus is calculated as

seasonReset(x)=xc, where c=log40004000.722381.\mathrm{seasonReset}(x) = x^{c}, \text{ where } c = \log_{4\,000} 400 \approx 0.722381.

In other words, a rating of 40004\,000 is equal to an additive bonus of 400400. The higher the rating in the previous season, the harder it gets to increase the bonus.

As of now, the ranks are as follows. More ranks will be revealed once they are reached.

RankRating
0
300
600
900
1200
1500
1800
2100
2400
2700
3000
3300
3600
3900
4200
4500

The users in the list are the users that have participated in at least one contest or external participation.

If there is a mistake in your real name or you want to change your username, please send me a DM on Discord.

© 2024–2026 Zanite