Hello CF community!
This blog is my way to draw attention and perhaps start an initiative to solve one big problem on Codeforces.
Before every only div 2 round,CF get hundreds of 'new ingenious users' , and they done all problems, have around 5-6 hacks per round and become candidate masters.That means no opportunity for regular div 2 competitors to jump with rating and feel how to be a winner.Maybe this is unsolved problem , but if we try together to stop this , I belive that we will achieve ceratin results.
Now I will write some of my suggestions , I'd love to read your :)
First:
Div 1 competitions are rarely ,but everybody who prepare tasks for only div 2 contest can ask someone with a high rating to help him around the idea of the most difficult problems.This is certainly reduce only div 2 contest.I think that the best users like tourist ,Petr,YuukaKazami... give some advice and help about preparing(Maybe I am wrong ?!).
Second:
Giving price for best 2-3 users in unofficial standings.For Codeforces it wouldn't be a lot of money and number of 'new ingenious users' probably reduce.
Third:
Don't write winners on blog for competiton.A lot of people imagine to be found on it and and don't choose the assets to do so.
Fourth:
Having separated rating graph for div 1 and div 2 contest.How would that work exactly I don't know,but for official competitors it could work as so far , and for div 1 competitors it could be calculated as for big competitions when we have one round for all members.
Fifth:
Change time for div 1 contests.In the previous period I done a small number of div 1 contests.A lot of round was held in unusual time of some working day ( for example tommorow is Monday and in 10 am we have contest ?! ). It's easy to change and fewer people would be hungry for rated contest.
I think that all these things are possible to do , some may have been wrong I love to see your opinion.
Also it would be nice to see suggestion of some important CF guy like MikeMirzayanov and Zlobober...
Thanks for reading and if we are persistent we will surely succeed improve our Codeforces :)
I hope one day every Div2 round goes along with a Div1 round.
It sounds better if we use words of Martin Luther King:
I have a dream that one day Codeforces rounds will pass without lags and delays.
I have a dream that one day even guys with 10 accounts understand there misbehavior and don't ever use another 9.
I have a dream today!
My opinion:
I disagree with all of your ideas.
Your first idea prevents Codeforces from welcoming new comers. It is really annoying.
I think that such difference has appeared in every contests already. Maybe I haven't understood your idea well.
Your last idea does not help anything. In my honest opinion, your last idea is very useless. It doesn't prevent Div 1 users from creating new account.
I agree with second thing.Many contest aren't ' balanced ' .The first three problems are very easy , after that for 95 % div 2 users D and E task are unsolvable.
And also, 1: the users can just register few accounts for the future, which would solve this issue for div. 1 users.
Your ideas are not too bad, we can adjust a little to make it right! Here come my opinion:
Instead of wait 7 days, they have to get accepted in at least 1 problemset (or more) to register a contest ( there is no point in participating a contest when you cant get accepted in any problem), it will significantly reduce fake accounts.
These problems' difficulty are visibly different, may be there 2 easy and 3 unsolvable problems for most Div2 participants because if they constantly solve C and D problems, they will become Div1 participants.
If those accounts are inactive, why should we delete them?
Of course, even new codeforcers can copy code to submit. This rule will not TOTALLY remove fake accounts but significantly reduce it ( it will be annoying when you need to do something that take time and not interesting). Fake accounts still appear but i think normal coder will not create as many accounts as they did
I don't think that 3 minutes is a lot of time.
I think a good step would be ban users who have multiple accounts from the same IP.
Especially if several people share one computer / network with small IP range, right?
This can't be done, as lots of organizations have shared networks.
My whole university has only a few IP addresses
In the last div2 round, there were just 47 new users in the top 300, so they don't affect div1 advancements nearly as much as you think. Fake new users are a problem, but they don't affect rating increases nearly as much as they affect the winners' list.
You don't understand why there are more div2 rounds: in each div1 round, people drop from div1 to div2, and if there are many new users, you need more div2 rounds to let them go to div1. More div1 rounds aren't a solution to the problem you mention, they only make it worse.
>Don't write winners on blog for competiton.A lot of people imagine to be found on it and and don't choose the assets to do so.
I don't think a lot of people expect to be in top 5. And I really don't understand what you mean by the assets thing.
I don't see what's bad about having contests at 10PM. Did you by any chance mean 10AM? :D
If you recall the blog post of a red user admitting creating div 2 account, you'll see one of his reasons was to be in top 5. I expect a lot of others to think the same.
Hmm, maybe. Still, I don't think not mentioning winners in announcements would affect it much.
The only thing I don't get here is what's the point of having some name in top 5 if that's not YOUR name? You can't share you victory with the community, maybe only mention it to your girlfriend ("hey, I've beaten the Div. 2, how cool am I?"). Anyway, I'd prefer to see myself in the standings among the red coders (even with no rating update) rather than fighting with Div.2 and anonymous Div.1 users "officially".
My girlfriend is easily bored when talking to how well I perform in contests (even though she competes sometimes) :)).
Without fully understanding of people motives, I don't think we can be sure whether being in top 5 was reason for fake accounts or not:
I think the motive is to have some fun hacking around and solving easier problems.
My fault about time :)
I have bigger mistake , luckily you didn't see it :D
47 new users in top 300,whether it is a small ?
About more div 1 + div 2 rounds we have different opinion , I don't see how it make things worse..Than we will have more people with regular rating in div 2 and normally that mean smaller number of new accounts.
No, that will mean as many new accounts in div2 only contests, many many many people in div2 and not so many people in div1.
That's probably the worst suggestion here. Due to many reasons:
You're proposing to actually REWARD those who are cheating.
You're motivating them to create MORE accounts (with two accounts sending the similar code they can win more).
You're trying to spend somebody's money, not yours. CF has to run a campaign to increase the salary paid to the problem setters and you're proposing to give away money to Div.1 contestants who go to Div.2 because they can win there? You should prepare a round to understand how much time you need to spend preparing the round comparing to 2 hours which you need to solve them.
You're proposing to actually REWARD those who are cheating.
No, he means reward for unofficial participants — those, who appear only after you check 'show unofficial'. Therefore, there is no point in hiding one's name and creating new account — because you can just go for reward from your 'main'.
Those who are not cheating are there already, you can see a lot of people in unofficial standings. Topic starter is proposing to give money especially to get attention of those who use fake accounts, so that's kind of a reward for cheaters.
I give some suggestions , I don't say iy is correct :D
The prices need not be a large.15 dollars for 3 prices aren't a lot.About similar codes,I say that only div 1 users can get a price,if we can't check codes of first 3 users than ok , and also codeforces disqualify people with the same codes.
My friend and I prepare one div 2 round, and spent a lot of time.I hope that will be organized soon ( we sent problems with solutions 2 months ago).
Do you take shipping costs into account? Do you realise such rewards would often take months to arrive? And why should CF staff dedicate non-zero time, effort and money on an extremely roundabout way to approach the cheater problem, anyway?
If it's so simple, then you do it. Make a kickstarter campaign, get money from people who'd like this to happen and do it.
To me this doesn't really seem to HAVE a good solution — but maybe requiring that a user's first contest be a contest that has both divisions could help? Then there would be less reason to make such an account, as everyone in div 1 would probably much rather compete in div 1 (and then wouldn't make an account just to compete in div 2).
Of course, that also makes it less inviting to new users, so perhaps there are better solutions...
How about the following solution?
Ratings don't work this way — if you recalculate the ratings after 1/3/5 contests for one user, you have to recalculate the ratings for the whole division.
No you don't. Right now when a new user takes part in a contest, his initial rating is considered to be equal to some fixed value. In my proposition his initial rating will depend on his result in qualifying rounds. That's the only change in rating calculations.
Can we have a rating criteria such that both div1 and div2 coders are rated in a "combined" contest. I can understand the unrated contest feeling. I do better in these div2 only rounds and continue with the same rating for weeks and after that one div1 round comes and one mistake and I again comeback to div2 then again I have to climb up similarly. So if the contests are rated for everyone, div 1 users can compete for fast(read very fast) coding and div2 users will try as usual. Is there any big drawback I am missing or the idea should be conveyed to CF admins?
I think that you misunderstand the motivation of fake-account-makers. In my opinion, most div1 users who take part in div2 rounds because they want to compete do it unofficially — competing with other div1 users (even though it's in unofficial part) is much more interesting than competing with div2ers. I think that the users who make fake accounts are the ones that want to win. (also, in some cases they just want to make dreamoon_love_AA not win)
However, having a separate rating for doing div2 contests when you are a div1 user might still be a cool feature.
My idea will be good then as well.
Lol, first suggestion sounds hilarious. You suggest replcing Div2only rounds with Div1+Div2 (which would be of course very nice), but your reason is not to provide fun for ~1500 people, but to prevent 10 Div1 guys competing in Div2 officialy. It is so incredibly absurd in itself that I think any additional explanation is not needed.
I am from Div 1 and can feel for us for not having a rated contest for long.
>If you really deserve Div1, you will get there after your first/second contest
>implying people can't take time to learn
That wasn't what he implied. "Deserve div1" in that post means "have a skill level worthy of div1". So he actually said something pretty similar to what you did, he just worded it in a way that makes him sound like a jerk.
Hmh, did I say that someone should become Div1 on his very first contest? No, I meant first time after his skill and knowledge become sufficient for Div1. ffao is completely right, but I really can't see the point of posts like this, absolutely noone is affected by smurfs n stuff, the rating system is totally okay.
Oh man, certainly I have big problem with English, but your problem is bigger. And yes, fake account doesn't mean that I don't know who are you! (very strange, the same country,the same language and both love programming,but you hate me and I don't know why)
This is what I think
Idea to have Div2-only contests is pretty outdated. Probably before it served well to the purpose of attracting newcomers to register on the website and compete more often but now Codeforces is already the most popular website for competitive programming so no need in it anymore.
The solution I suggest is to better distribute Div1+Div2 contests. For example, let's take a look at the statistics for last 6 months. Number of rated Div1+Div2 or combined (like Rockethon or Good Bye round) contests starting from September 2014: September — 3, October — 4, November — 2, December — 4, January — 2, February — 3. If one contest from October would be moved to November and one contest from December would be moved to January then we would have pretty uniform schedule and everybody could enjoy enough rated contests in the given month — namely 3. TopCoder has the same number of contests so it's totally fine.
Moreover, one of the reasons to ban Div2-only contests is that they teach newbies to solve easy problems, not the hard ones which is not enough to become a good competitive programmer.
You think it would be better to not held a contest at all instead of making a div2 round?
You can't simply say to div2 problemsetter — now please add few harder problems and make div1+div2 round instead. Some of them will do it, but not all. And also lot of those div2 only problemsets have much lower quality/originality, so they are OK for beginners and div2 rounds, but we should look for something better for div1 contest.
It is better to have more contests in different time — in such case everyone can pick some of them to participate) With all those div2 only contests — at least div2 users have a lot of contests to choose from (and majority of CF users are from div2). Of course, I would agree to have 6 div1+div2 contests every month instead of div2 only rounds, but seems that div1 rounds aren't held rarely just because we have to make some div2 only rounds sometimes.
And can you please explain last part (about solving easy problems)? I agree that div2 contests are often easier than div2 parts of div1+div2 rounds, but they are still good for beginners — and after improving and making into div1 they'll have to solve harder problems.
I think, the only problem is that the fake accounts hacks the normal accounts. Why we just don't deny hacking for the new users?
Hack isn't important at all! Actually hacks are useful for programmers, They'll understand that their solution is wrong and try to make it OK (if they didn't lock the problem). Even if fake accounts don't hack anyone, hackable solutions would fail after systest.
And what about real div2 competitors that would've hacked something eventually, but couldn't because of a fake GM in the room?
You're right. I didn't think about it that way.
no idea :p
What do you think about the idea of eliminating Div2-only contest with the following way?
Div2-only [A B C D E]
=>
Div2 [A B C D E] + Div1 [B C D E]
OR
Div2 [A B C D E] + Div1 [C D E]
The hardest problem in DIV2 round is hard enough for the majority of DIV1 users.
If some GM/IGM has no interest to participate because of DIV1-D/E absence, it's up to him. But the majority of DIV1 still will enjoy the "reduced DIV1 round".
Probably, it can decrease the disgusting FAKE-DIV2-TOPs count.
Man, fake accounts in Div2 is the least important problem CF faces, don't try to change something that works fine to deal with that.
I don't think that there is a really huge amount of people doing this and fact that some guy from Div2 earns five pts of rating less is not that big issue to adjust organization of contests or make major changes in Codeforces' software. Assume that Div1 cutoff will be 1800 instead of 1700 and there are no fake accounts participating. I suppose that it will be harder for current Div2 people to get decent positions in contests, but that will be fair, won't it? Cutoff of 1700 is somehow artificial and so are decent positions there. I don't see any particular reason why people with skills at level ~1650 can have nonzero probability of winning their Div contest while people with skills ~1900 or ~1300 don't. Implying, it is not a reason to be very proud of that one won with people from Div2, but it is a reason to be very proud of that one won with problems which were challenging for him. One can always compare himself to all people which are worse than him and he is always the best among them, but is that a reason to be happy? Reason to be happy is improving own skills and eventually fighting with all people, not a conveniently chosen subset.
Wonderful! That ends the debate there and then. :)
I'm not agree as if you div 2 D/E = div 1 B/C are hard enough for majority of div 1 contestants. So if somebody solves a all problems in div. 2 (or D or E) then he deserves to become candidate master.
Let's take a look to Codeforces Round 295 (Div. 2) winner:
If he was in DIV1, he solved
DIV1A in 00:33(+) and DIV1C in 01:57(+1),
and got
500 — 33*2 + 1500 — 117*6 — 50 = 1182 And what place could he take in Codeforces Round 295 (Div. 1) with this score?
Place #177, the place among reds and oranges.
It's obvious, that DIV2 problems (DIV1 A-C) are hard enough for the majority of DIV1.