FAQ
What is this?
Have you ever wondered who is the best hacker on Codeforces? Here is simple solution, which would try to answer for your problem! I would like to introduce new system of grading hackers in rounds.
How does it work?The whole rating system is based on Elo rating. The problem is how to measure user's performance in each round.
Yes, how?
The whole system is now in phase of testing, so some solutions may be changed (and probably will be changed :)). So let's consider some user during some round. Let's call him Bob.
I want to choose another name, may I?
No.
Ok.
So, let's say that Bob solved three problems: A, B and C (Bob is pretty sad), but also hacked one solution for B and had one unsuccessful hack attempt. Bob doesn't know that his solution for C won't pass system tests. How would we know if it was good or bad?
At first, we will look at all possibilities for hacks for Bob. We will count all hacks done by other users in his rooms for problems that Bob solved (by problems solved I mean problems that had pretests passed). So:
Now we will count unused hacks possibilities (solutions which passed the pretests, but at the end didn't pass all tests, so they could be hacked), again only for problems that Bob solved, so let's call it #possibilities and it is calculated as above.
Now we will do some magic, the possible score to achieve by Bob by hacking was:
I thought that it's not pretty fair for hacks and possibilities to have equal weight, so I choose to numbers a and b (not completely random and right now a > b) and set maximum possible score by Bob to:
Of course in possible score we don't count wrong Bob's solutions (he cannot hack himself) and hack made on him. So we won't count his wrong solutions for C.
Bob score is count as:
Then we'll rescale this score, when 0 will be one bound and 1000 — another. Let's say that 1000 is maximum possible score (described above). Right now 0 is average score made by all users in room (generally this mean that if you won't hack anything you can have negative or positive score depends on how good hackers were with you in room).
Now what about unsuccessful hack?
Unsuccessful hacks are count normally before scalling with another magic number c. But there is one problem: what if some other user (let's say Rob) had no hack possibilites, but made unsuccessful hack? I guaranteed that punishment for wrong hack won't be more than c' (another magical fixed value).
What's then?
We have now scores for every user taking part in contest. We'll clasify them as in normal contest and set new rating using system simillar like in Codeforces (including new users starting nearby 1500 rating, using probabilites with 400-algorithm and so on... boring stuff).
So, where are the results?
I looked over last 12 contests and I have some data. The first 100 can be found below, and the whole ranking here.
There could be (and probably there are) some mistakes with wrong calculations and so on, but as I said, everything is under tests, I just wanted to share it with you. Feel free to make suggestions :)
Notes
In general, this rating doesn't mean that more hacks = better rating, it all depends on how many hacks you could do. It also may be quite not-fair for people who are making too many unsuccessful hacks (I am looking at you worse), because it is not punishing such people enough, but I still hope that will encourage people to hack more.
If you are interested, you can look at my previous posts about hacking, they can be found under hackme tag. Thank you for all up-votes!
Ranking
place | handle | rating | #contests |
---|---|---|---|
1 | Antoniuk | 2077 | 6 |
2 | dnkaito | 2073 | 8 |
3 | space_man | 2071 | 5 |
4 | scfkcf | 2070 | 7 |
5 | dcms2 | 2069 | 5 |
6 | xtu_free | 2067 | 6 |
7 | mbaros | 2063 | 5 |
8 | Alex1878 | 2060 | 5 |
9 | loujunjie | 2057 | 7 |
10 | catfish | 2055 | 6 |
11 | ilidar | 2054 | 7 |
12 | cup_of_tea | 2044 | 6 |
13 | mhadih | 2043 | 8 |
14 | kraskevich | 2040 | 6 |
15 | korun | 2039 | 7 |
16 | DimonK | 2038 | 5 |
16 | Omelianenko | 2038 | 5 |
16 | nguyenchicuong | 2038 | 6 |
19 | mosiomohsen | 2032 | 7 |
20 | poma.prs | 2031 | 7 |
21 | swap | 2027 | 5 |
22 | Dwayne | 2026 | 7 |
23 | shym98 | 2025 | 7 |
24 | vidyut_7 | 2021 | 8 |
24 | nemzs | 2021 | 5 |
26 | .PEIN. | 2020 | 6 |
27 | ikbal | 2019 | 6 |
27 | vengarth | 2019 | 5 |
29 | zhabo | 2018 | 7 |
29 | squee_spoon | 2018 | 5 |
31 | flame-alchemist | 2017 | 6 |
32 | waleed | 2014 | 5 |
33 | nightfury1204 | 2013 | 7 |
34 | p-n_nepexod | 2011 | 6 |
35 | ks864148379 | 2008 | 7 |
36 | zjbztianya | 2006 | 5 |
37 | hamedArafa | 2005 | 6 |
38 | HASP | 2001 | 6 |
39 | dnvtmf | 1999 | 8 |
40 | OmarEltobgy | 1998 | 5 |
41 | knst | 1995 | 5 |
41 | pawky | 1995 | 7 |
43 | kuldeepfouzdar | 1994 | 6 |
44 | IMAN_GH | 1991 | 6 |
44 | chinesejiang | 1991 | 7 |
46 | shiva_r31 | 1986 | 6 |
47 | kellymilla18 | 1985 | 7 |
48 | AllCatsAreBeautiful | 1983 | 5 |
49 | Elk-Cloner | 1981 | 7 |
50 | isurugieri | 1979 | 5 |
51 | arilato | 1976 | 8 |
52 | deMatos | 1973 | 6 |
53 | Kuroba | 1971 | 6 |
53 | dakeshi | 1971 | 5 |
55 | BigWhiteRabbit | 1968 | 6 |
56 | MRoy | 1961 | 6 |
57 | sorbhs | 1959 | 6 |
58 | BaHiE | 1955 | 4 |
58 | Fritz | 1955 | 5 |
58 | manatee | 1955 | 5 |
61 | suliang | 1954 | 6 |
62 | NominaTed | 1950 | 5 |
63 | Spark001 | 1945 | 4 |
64 | sashkevichi | 1942 | 5 |
65 | ashish08 | 1940 | 5 |
65 | olive | 1940 | 4 |
67 | venomous | 1935 | 7 |
68 | cccrown | 1933 | 4 |
69 | xennygrimmato | 1931 | 6 |
70 | add1ctus | 1927 | 4 |
71 | harshil | 1921 | 5 |
71 | lanjiongjiang | 1921 | 5 |
73 | MakArt | 1916 | 4 |
74 | VietaFan | 1914 | 7 |
75 | htrinh | 1912 | 5 |
76 | JJ921010 | 1911 | 5 |
77 | nikcode | 1908 | 6 |
78 | Kshatiaya | 1906 | 5 |
78 | Slyusar | 1906 | 4 |
80 | warlock | 1904 | 4 |
81 | Aker | 1902 | 6 |
82 | loby | 1901 | 4 |
83 | Chinawyh | 1900 | 5 |
83 | shaonianguai | 1900 | 5 |
85 | mathhislife | 1896 | 5 |
86 | radhey_maa | 1895 | 4 |
87 | deathsurgeon | 1894 | 4 |
87 | prerakd | 1894 | 6 |
89 | DrPaulVazo | 1891 | 5 |
89 | youngkl | 1891 | 5 |
91 | martinradev | 1888 | 6 |
91 | selfcompiler | 1888 | 6 |
93 | ricowind | 1887 | 4 |
93 | Rostislav_the_great | 1887 | 4 |
93 | tapaswenipathak | 1887 | 5 |
96 | songxiaolong | 1886 | 5 |
97 | hcv | 1884 | 4 |
97 | scau201330340113 | 1884 | 4 |
99 | ohweonfire | 1883 | 6 |
100 | 123ghusa | 1881 | 5 |
100 | 17JambaJuiceKallalk | 1881 | 4 |
100 | ngfam_kongu | 1881 | 4 |
standings without tourist on top o.O
Two suggests:
Div.1 successful hacks should get more performance points(because really hard)
Problems with higher difficulty should get some bonus for hackers(because even harder than above)
You may be right. I will look at it.
I don't know if "1." is really a good idea. Yes I'm agree that there are lot less sucessful hacks on div1, but the hacks aren't necesarily harder, the mistakes can be the same, but just less numerous. Even if a compensation should exist, that would be illogical to proceed like this.
For "2.", yes, that should be like this, maybe by following principle of "dynamic scoring".
To avoid the matter that there are less coders making mistakes on div1, maybe we should just split the hacks realised on div 1 and on div 2 and make two standings, but chameleons coders oscillating between purple and blue will have no chance to reach any top, even if hacks are of great quality.
I came up with "1." by the following reason: Almost everyone in div.1 knows how to avoid simple mistakes e.g. integer overflow. In fact if you want to hack a div.1 solution, you need fully understand what defender trys to do, rather than find a improper
int
in a code.BTW,
(#successful hacks + #FST) / (#accepted)
will be a good choice for dynamic scoring (except problems D and E because probably only one or two submissions will be made in a room)I think, hacking code of a low rated coder is not same as hacking code of a high rated coder... Hacking code of high rated coders should give more points...
If we see in rating system of different game(like football, cricket...etc), the ratings tend to converge on a team's true strength relative to its competitors... For hacking, mistakes of high rated coders are very tricky(in general)... just shared my thought... :)
Nice suggestion, I will also consider this.
How could it be, that account, who have never hacked is at the hacking ranking? and how can it be in top-100 of hackers (57. sorbh) ? Serious problems with ranking formulae...
Yeah, the problem may be when an user would solve only problems where he cannot hack anything. In such case his maximum score would be 0 and his score will be 0. I will change it asap.
That's why I sad it's really beta version :)
Thanks for pointing this out!