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
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.
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.
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.
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.
Do you mean that some people would like to choose not to be informed about their solution being hacked?
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.
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.
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.
"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.
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 ?
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?
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.
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.
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.
Better than nothing, but many people (including me) enjoy rated contests more.
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.
Can't they be randomly added to rooms?
+1, that's a very good idea, probably also much easier to implement.
I don't see why not. Good idea.
on what basis are users initially divided into rooms (before contest starts)? is it completely random or is it something based on users' rating?
completely random AFAIK
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.
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.
this might reduce the randomness of the distribution of users among rooms
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)
Ok. It's a serious counterargument.
Allow to hack out-of-room solutions, but don't tell out-of-room participants that their solution has been hacked?
Before competitions someone would like to know full list of participants. And it can influence his option to participate or not to participate.
Why would anyone do that?
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.
Then what if someone got hacked at 1:54:30? :D
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.
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 :)
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.
Big paragraph. Wrong logic. Don't waste time reading 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.
Big paragraph. Wrong logic. Don't waste time reading it.
Premises of my argument were wrong. Now I've understood.
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.
Wrong logic. Don't waste time reading 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.
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.
Nice thinking.
Totally agree with him on all the points mentioned.
+1 from my side.
How about all late users, assigned to the same room??
Create many accounts , register them late, hack them.
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.
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.
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.
Pls, this should be changes, there should be a chance to register for contest even after it starts. Like LC.
True i had the same problem