Geothermal's blog

By Geothermal, history, 5 years ago, In English

As many of you are aware, some users abuse Codeforces' virtual participation feature in order to submit prewritten solutions immediately when the contest starts so as to appear at the top of the contest leaderboards. A few examples are here, here, and here.

Of course, preventing cheating by virtual participants is rather difficult, especially because while these three are relatively obvious cases, other forms of dishonest behavior are just as plausible but are harder to detect. For example, someone who looked at the comments on a round's announcement before participating virtually and thus learned that a particularly valuable problem was relatively easy to solve would have an unfair advantage (as they would be able to earn more points by knowing to attempt this problem early into the contest), but one that would be rather difficult to detect.

Luckily, all Codeforces scoreboards include a checkbox towards the top-right of the page through which users can select whether to include unofficial scores in the rankings. This works great for rounds rated for all users (i.e. combined Div 1/Div 2 Rounds and rounds with separate contests for the two divisions). However, for rounds run only for Division 2 or Division 3, we run into a problem. There is no way to let the standings include participants who participated in the actual contest but who were over the rating cap, but not virtual participants from after the contest. I personally enjoy participating in these rounds to compete with the other unofficial contestants, to practice quick problem-solving, and to solve the harder problems, which are often interesting and challenging even though they're designed for a lower rating cap. Therefore, it's somewhat frustrating that it's difficult to access the standings as they were at the end of the contest (i.e. including only live participants) a while later.

It turns out that there's an easy solution already implemented. On Educational Round scoreboards, an option at the top-left allows users to select whether to view only Division 2 users or to show users from both divisions (separately from the option to show or hide virtual participants). I propose that Codeforces extend this feature to all rounds rated only for Division 2 or for Division 3. In other words, Div. 2 only and Div. 3 only rounds would have the same option to show or hide participants above the contest's rating cap independent of whether virtual participants are hidden.

Please feel free to share your thoughts below. While this is a relatively small problem, it does impact a large number of users: for example, 1557 competitors above the 1600 rating cap registered for the last Division 3 round alone. Moreover, I'm optimistic that this wouldn't be overly difficult to fix, as the necessary infrastructure already exists and is in active use. Implementing this proposal would simply be a matter of extending it to more rounds.

  • Vote: I like it
  • +141
  • Vote: I do not like it

| Write comment?
»
5 years ago, # |
  Vote: I like it +30 Vote: I do not like it

someone who looked at the comments on a round's announcement before participating virtually

I sometimes check out some problems/solutions or just solve one problem and then try to virtually participate since it lets me train with a hard timer. Not specifically on purpose, it just happens. Who cares if an out-of-competition contestant has a good result? There could be any sort of circumstances that affect it and we'd never know. Similarly, if someone just submits prewritten codes for everything immediately, they should be removed, but if they aren't, oh well.

In other words, Div. 2 only and Div. 3 only rounds would have the same option to show or hide participants above the contest's rating cap independent of whether virtual participants are hidden.

Sure.

  • »
    »
    5 years ago, # ^ |
      Vote: I like it +27 Vote: I do not like it

    I completely agree that we shouldn't go witch-hunting for people who don't perfectly comply with the virtual participation rules. My proposal is simply to allow users to view a scoreboard that excludes virtual participants but includes live participants who are above the rating cap for a contest so that cheating in virtual participation doesn't affect those rankings and so that they can review the scoreboard as it was immediately after the contest. (This would have no adverse effects for the virtual participants, who would, after the change, still be able to select a standings page that includes them.)

»
5 years ago, # |
  Vote: I like it +64 Vote: I do not like it

Another thing is that it's impossible to view a solution from mobile phone by clicking at cells at the standings. And it works in normal rounds.

»
5 years ago, # |
Rev. 2   Vote: I like it -43 Vote: I do not like it

I have a blog explaining why it is bad for newbies to view the whole standings, and why it is better to view only a fixed range of rating. This range should be customizable. Even experienced participants can suffer from standings. However, I'm too lazy to translate that blog (it's only in Russian).

In short: http://neerc.ifmo.ru/archive/2015/southern/standings.html here problem G is the 8th easiest, but everyone followed a team with high red users and tried only I. K had the same difficulty as I but still everyone tried only I. The reason is they saw the winner team in the standings.

»
5 years ago, # |
  Vote: I like it +5 Vote: I do not like it

I think that it would be cool to implement in a way such that users can select a range of rating to see in the standings and the additional option of official or unofficial to see the users that participated int he original round, a virtual, or both. I think it would give a lot of flexibility, but I don't know how practical it would be to implement such a feature.

  • »
    »
    5 years ago, # ^ |
    Rev. 2   Vote: I like it +14 Vote: I do not like it

    Similarly, I would love a feature for Codeforces to show your "performance rating" for a contest (this could be defined different ways, one idea is the rating such that if you already had this rating before the round and all else was equal, your rating would not change as a result of the round).

    Currently when I'm curious, I typically look for rating changes near zero (in the positive and negative direction) from other people who place slightly above/below me to try to estimate/bound this. If there's a better way let me know!

    • »
      »
      »
      5 years ago, # ^ |
        Vote: I like it +17 Vote: I do not like it

      One alternative is to use the Codeforces Visualizer site. Input your score and the contest number; you can then use binary search to find the rating that would receive +0 delta at your position.

      • »
        »
        »
        »
        5 years ago, # ^ |
          Vote: I like it +10 Vote: I do not like it

        Thanks, that worked well! I tried putting in my actual numbers from Codeforces Global Round 4 and it was off by 1 from my actual rating change, but maybe that's because of my presence in the standings. Anyway, it's close enough. :)

»
5 years ago, # |
Rev. 2   Vote: I like it +79 Vote: I do not like it

As many of you are aware, some users abuse Codeforces' virtual participation feature in order to submit prewritten solutions immediately when the contest starts so as to appear at the top of the contest leaderboards.

I'd like to know why the hell people do this. It seems so utterly pointless and moderately humiliating. If you do this, anyone who sees the scoreboard will immediately understand what you did. So it's not like you're fooling people that you won something, but it should be pretty embarrassing. I would be ashamed to see my name with a fake result on a leaderboard.

If you just want to see your name in a public place, go post "you forgot to thank Mike", "start sys test already" and "me after solving A, B, C: (pictures of Kermit the Frog sitting around)" under contest announcements. At least some people will respect you for that.

  • »
    »
    5 years ago, # ^ |
      Vote: I like it -8 Vote: I do not like it

    Steps to reproduce:

    • See a recent contest you just missed (because you were in the middle of a game)
    • Check the standings and see that your friends could solve 1 or 2 problems. "Ah cool, I can definitely do better than that".
    • Start your virtual participation
    • Open problem A, can't come up for a solution after 2 minutes. Screw this shit, I'm gonna "solve" everything.
    • ...
    • Profit?
»
5 years ago, # |
  Vote: I like it -12 Vote: I do not like it

Now that we're over 100 upvotes: MikeMirzayanov, any thoughts on whether this update might be plausible?

  • »
    »
    5 years ago, # ^ |
      Vote: I like it +1 Vote: I do not like it

    Mike downvoted this 11 times :(