Errichto's blog

By Errichto, 4 years ago, In English,

It happened to me twice to skip a CF round because of the registration. Once I was too late, and once I even implemented A and tried to submit — but it turned out I haven't registered. It also happened to some of my friends.

For standard CF rounds the registration ends 5 minutes before the contest. The reason is that participants must be divided into rooms, to be able to hack. But hacking isn't so important, right? It's some extra possibility and many would enjoy a round even without hacks.

Let's allow participating without having a room. All people registered at least 5 minutes before should be assigned to rooms as usually. And after that, one should be able to register "out of room" — to participate without hacking and being hacked. A round should be rated for everybody. So, one could register after reading problems, and maybe even after implementing something.

Note that hacks are only a privilege. It's good to be hacked instead of getting WA on systests, and it's good to be able to hack others. So, it will be optimal to register before a round, if possible.

Does anybody see any drawbacks? If not, then make this change please. @CF_TEAM

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

»
4 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Well...this way very high percentage of the participants will register after the contest has started.

Because lets face it — nobody likes getting his rating decreased after a round. If it's possible to register to a round after its start, someone that doesn't solve enough problems will not register at all and thus, will not lose rating.

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

    If you register and you don't submit, your rating doesnt change. So if someone feels that he can't solve anything even if he/she is registered his/her rating remain he same.

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

    If one does not submit any solution during the contest, his rating will not change — even if he registered for the contest. Therefore I do not see any drawbacks in this.

    But Errichto is right — in this case hacks should be disabled for late registered users.

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

Note that hacks are only a privilege.

That's not exactly true. As recent Codeforces discussions show, psychological state while competing is important to many, and different people will sure react differently to their solution being hacked. Often in suboptimal ways.

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

    Do you mean that some people would like to choose not to be informed about their solution being hacked?

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

      I would not state it like that, but technically, the answer could be yes.

      Imagine a contestant who submits, say, problem D at 1:55 into the contest without hacks, and later his A fails system test. Now, what happens if instead his A is hacked at 1:30? He gets the notification (some focus lost), possibly switches back to A to see what could have gone wrong (context of code on D lost), spends a few minutes fixing it, and in the end does not manage to complete D in time. So, he loses more points this way.

      It may be argued that this is suboptimal behavior. But to know that in advance, the contestant has to be sure that he completes D in time if he does not switch back to A, and such predictions are generally hard to get right.

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

        Ok, I see your point and I agree that situations are possible that someone would get (much) worse place because of being hacked. It can be argued whether it implies that my idea is bad. I think not, but I understand the opposite.

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

      Also, let's not forget the temptation to go hacking instead of solving the next problem (I personally attest that I'm prone to this). It is often suboptimal behavior, but it is psychologically attractive. Therefore, formally, the people who can't hack at all have a psychological advantage over the people who can.

      To be clear: I don't have a strong preference pro or contra your suggestion. The point is that the reasoning is not as solid as it looks.

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

        "Also, let's not forget the temptation to go hacking instead of solving the next problem (I personally attest that I'm prone to this). It is often suboptimal behavior, but it is psychologically attractive." — hah in my case it is completely different. I consider problem solving far more entertaining than hacking, and I am willing to go hacking only if I see from scoreboard that it might be of positive expectancy. First thought that comes to my mind when I hear "hacking" is struggling through full of cases and copy/pastes ugly codes of people who seem to have learnt coding yesterday ._. Unless I have a particular testcase I want to hack with so that it can be quickly checked if somebody's code handles it properly, when reading such codes my willingness to live fades away. In TC I can sometimes fight that feeling, but during CF if I know that I may be solving some problems right now I have no doubts of what to do :P.

»
4 years ago, # |
Rev. 4   Vote: I like it +63 Vote: I do not like it

Disagree. I, personally, don't want any advantages comparing to people who registered during contest. If people will compete by different rules, what is a point behind rating system then ?

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

    I wouldn't say that people would "compete by different rules". Rules would be the same for everybody. Your situation is worse if you register later. Your situation is also worse if you decide to code with one hand. I know it's a ridiculous example, but I think it's valid.

    More reasonable example. With the current rules someone can't be online for the last 20 minutes of the contest. Does it mean that you don't want to participate and compete against him?

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

      Your arguments involve somebody acting weird, or something they rely on, what brings slight mess to final results. Codeforces can't stop it, I am talking about something it can.

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

        I believe (it may be not true) that the most common usage will be that someone forgot to register or was too late for that. It is similar to my example that someone can't be online for the last 20 minutes. And it also involves "something they rely on".

        And there will be people deciding to register later on purpose. Maybe because they don't want to be distracted by hacks. Isn't it "somebody acting weird"? Of course, it differs from my example with someone coding with one hand. But it's the same as someone using his own strange techniques or rituals <sarcasm>like using Java</sarcasm>.

        And I agree with you about your second sentence. My idea is bad if we want to maximize the meaning of standings and rating, and if we care only about it.

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

    How about letting those who register during the contest to participate "out of competition"? This way, they don't affect participants' ratings, but they still could enjoy a live contest.

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

      Better than nothing, but many people (including me) enjoy rated contests more.

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

        I agree, I prefer rated contests too. But Gassa already mentioned why it could be a benefit to participate without hacks, and just like what ballon said, I think participants should be in the same situation in a rated contest.

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

Can't they be randomly added to rooms?

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

    +1, that's a very good idea, probably also much easier to implement.

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

    I don't see why not. Good idea.

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

      on what basis are users initially divided into rooms (before contest starts)? is it completely random or is it something based on users' rating?

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

        completely random AFAIK

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

          I noticed that in div2 only rounds, out of competition contestants are in their own rooms. So it's not completely random, but there are probably only minor rules like this.

    • »
      »
      »
      4 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      Usually, there are approximately equal number of contestants in rooms (+-2). I guess then it would be more fair to balance the number of contestants in rooms using the late registered ones.

      • »
        »
        »
        »
        4 years ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        this might reduce the randomness of the distribution of users among rooms

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

when you are out of room you may use some solutions that hackable when they're known but not in advance (like hashes with fixed constants)

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

    Ok. It's a serious counterargument.

  • »
    »
    4 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Allow to hack out-of-room solutions, but don't tell out-of-room participants that their solution has been hacked?

»
4 years ago, # |
  Vote: I like it -25 Vote: I do not like it

Before competitions someone would like to know full list of participants. And it can influence his option to participate or not to participate.

»
4 years ago, # |
  Vote: I like it -29 Vote: I do not like it

You should ask MikeMirzayanov first why he decided not to add participants officially once a contest begins. Personally, I don't care. I think 24 hour window is good enough to register, but adding users officially after contest begins doesn't seem to have any drawbacks either(I may be wrong though).If anything,(I am digressing a little) I'd like hacking attempts to get blocked at 1.55hr, because correcting a mistake with 30 seconds to go is very very very difficult.

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

    Then what if someone got hacked at 1:54:30? :D

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

      Then he or she has 5:30 mins to correct it, or ignore it and continue coding the problem they were coding at that moment. Suppose you get hacked at 1:54:30, and you were in a way idle(meaning, you weren't coding anything, probably just thinking about an unsolved problem) at that moment because you can't figure out how to solve the remaining problems. Now you have time to correct your mistakes, given you are lucky someone hacks you.

      I've raised this point before, but unfortunately, people don't seem to agree with me, because most hackers start hacking in the last 5 minutes. But I still think that blocking hacks in last 5 minutes can be useful, because
      1. It gives hackee a fair shot to correct their mistake. 2. It could be the case that a lot of people get better standing just from hacks, than those who solve more problems. I don't know why points from hacking is even awarded. Probably to encourage hacking so that people can rectify mistakes, but then again, what's the point in this if your hackee doesn't have any chance of defending. 3. The last 5 minutes, you can code without tension of hacking which causes a lot of panic.

      • »
        »
        »
        »
        4 years ago, # ^ |
        Rev. 3   Vote: I like it -24 Vote: I do not like it

        However, there is a strategy for hacks to wait until the last minute so that the person doesn't have time to fix his/her error. Thus, the hacker gets easy points off this.

        Why the downvotes? Don't tell me people don't use this strategy...

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

        For me it sounds like you are asking about taking away possibility to get information about your solution being wrong and fix it for last 5 minutes. Basically you are asking to make something that will decrease your expected number of solved problems.

        I'm trying to find some logic in it; the only idea I got — you think that by banning hacks for last 5 minutes you'll stimulate people to hack you earlier. In this case your reasons 1. and 2. sort of contradict each other :) In 1) you are asking people to hack you earlier so you would have more time to fix your wrong solution and better chances to get AC; in 2) you say that hacks are bad for standings because CF is about problem solving, but decreasing number of hacks (by stuff like "we don't allow you to hack others now, even if you want to", which you suggested in 1.) will make your chances to get AC worse :)

        • »
          »
          »
          »
          »
          4 years ago, # ^ |
            Vote: I like it 0 Vote: I do not like it

          you think that by banning hacks for last 5 minutes you'll stimulate people to hack you earlier
          yes

          Also, I din't contradict myself. These are two independent matters(hackee getting time for correcting mistakes, and points from hacking being less cool than points from solving problems), not mutually exclusive.

          But I've made peace with the fact that for better or worse, its never going to get implemented.

        • »
          »
          »
          »
          »
          4 years ago, # ^ |
          Rev. 2   Vote: I like it -17 Vote: I do not like it

          Big paragraph. Wrong logic. Don't waste time reading it.

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

            Do you know that one gets the same number of points for hacking close to the end and for hacking earlier?

            Sure, I want extra points for hacks. So I don't wait with hacking because someone else could spot those mistakes before me. And maybe that hacked guy will change his program to pass my hacking-test but there will still be some mistakes. Awesome for me, I will hack him again.

            I think caring about one other person to have lower score doesn't make sense, unless you fight for the top spots and a person to be hacked has slightly more points. Never happened to me so far.

            • »
              »
              »
              »
              »
              »
              »
              4 years ago, # ^ |
              Rev. 3   Vote: I like it -12 Vote: I do not like it

              Big paragraph. Wrong logic. Don't waste time reading it.

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

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

                  Premises of my argument were wrong. Now I've understood.

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

                I don't understand why you're talking about an almost impossible scenario. What about the following one — what if all participants decided not to submit anything for the first hour? So, what do you try to achieve or show with your scenario?

                No, I don't wait for the last 2 minutes. I hack when I want to. No, a hacked guy won't likely correct his mistake in the last 2 minutes. And only one person can hack one solution.

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

              Wrong logic. Don't waste time reading it.

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

                DAMN, I UNDERSTAND YOU! You think that after a successful hack it's still possible to hack this guy. That's why you're talking about waiting for the last minutes. It doesn't work like that. A hacked solution can't be hacked again.

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

                  I just read rules. You're right. My argument is meaningless in light of this enlightenment. And finally I understand why kehKeLenge said I wasn't making sense.

»
4 years ago, # |
  Vote: I like it -11 Vote: I do not like it

Nice thinking.

Totally agree with him on all the points mentioned.

+1 from my side.

»
4 years ago, # |
  Vote: I like it -15 Vote: I do not like it

How about all late users, assigned to the same room??

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

I've also missed the registration once and realized only after I wanted to submit the solution for A. From this day I think of the registration as a part of the contest. There are many things the contestant has to remember in order to earn points (like checking corner cases or integer overflow etc.:). The registration may simply be treated the same way. Then instead of changing the codeforces engine, one might look back and focus on the reason, why didn't he register, which will allow him to fix the real issue.

»
4 years ago, # |
  Vote: I like it -79 Vote: I do not like it

I have a better idea-why not disable hacks altogether, and do system tests instead of pretests during coding phase? This way, Codeforces will become more similar to ACM-ICPC format.

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

It could be an option (checkbox) "register automatically for standard upcoming rounds". If you will not participate (no submits or no reading problems) in a contest then this checkbox is unsigned automatically.