Блог пользователя Z0RR0

Автор Z0RR0, история, 5 лет назад, По-английски

I have been with codeforces for a long long time. It has been always my thought that why codeforces rounds are only 2 hours (usually). The things that I am sharing right now are just my opinions.

I think a CF contest's difficulty is chosen by looking at the very topmost population. Maybe like 5% of the population. They should complete or almost complete the problemset within the contest time. Well, that's fair I guess. But from the top, 50% or even maybe from the top 25% would feel that they could solve another one if there was more time. That's true for everyone else too I guess.

Let's say a usual codeforces round is now 3 hours. What are the pros? Most of the contestants will get 1 extra hour to think with 1 or 2 more problems that they don't get to solve within 2 hours. Speedforces effect should be reduced at least a bit. A slow but knowledgeable contestant might end up higher on some fast contestant who used to be on top of him most of the time. Doesn't everyone want to be separated by problem solve count rather than the speed! And 2 hours of the contest does not let you much time to recover. 3 hours of contest would let you much time to recover and could enforce different strategies. Some problem requiring 90-100 minutes to solve for a certain person is almost impossible to solve within the 2 hours contest time.

What are the cons? The topmost guys would finish the contest very early. But it also happens in 2 hours contest too. Some guys finish X problems and they still had 30-40 minutes which is very low to solve the next one. Another problem is they have to sit through the whole contest because of hacks may be. Some people might be unable to find 3 straight hours of free slot. And is it a problem that 3 hours of contest would put heavy pressure on the server (maybe in terms of cost too)? I don't think this one is an issue though. One problem could be someone might find it better with 4 hours rather than 3 hours, some might find it better with 5 hours of the individual contest. It's a never-ending debate about what is suitable.

There could be many other pros and cons. But my point is maybe 2 hours is too low for a contest. I think most of the contestants put an extra hour at least on the almost solved one/thinking for a long time one on the pen-paper or in the comment section may be. Putting that hour in the contest itself might be more interesting.

  • Проголосовать: нравится
  • +143
  • Проголосовать: не нравится

»
5 лет назад, # |
  Проголосовать: нравится +149 Проголосовать: не нравится

For me I think two hours is good enough for a contest with 5 problems, in which you need to solve easy problems fast (which is also very important in both Codeforces and ICPC) so that you can have time for the more difficult ones.

I assume the "Speedforces effect" you mentioned is when the rank of the people are decided largely by the the speed of first several tasks (like in the last Global Round). However, in those circumstances, we should blame the contest for having a difficulty gap instead of for having just two hours.

»
5 лет назад, # |
Rev. 2   Проголосовать: нравится +121 Проголосовать: не нравится

Another point: I definitely don't mind the occasional 3 hours contests (infact I think they are fun sometimes), but you seem to be missing that 3 hours might be a bit much for casual competitors who might not be able to fit 3 hours of their day for a contest especially when during the day on non-weekends so it might decrease participation. (2 hours on the other hand is fine, especially since if you compete for 90 minutes and leave, your rank/results won't be affected as much).

I think the 90-120 minutes format is pretty good, extending it more might just make it on the heavy side like ICPC contests.

»
5 лет назад, # |
  Проголосовать: нравится +65 Проголосовать: не нравится

How does the fact that people will solve more problems makes it better?

Doesn't everyone want to be separated by problem solve count rather than the speed

wtf? There will be the same number of groups by problem solved count.

I guess you are just frustrated from "oh, 5 more minutes and I would get one more problem". Let's wait till you get AC in last 5 minutes.

Changing duration doesn't make anything better.

  • »
    »
    5 лет назад, # ^ |
      Проголосовать: нравится -7 Проголосовать: не нравится

    Changing duration doesn't make anything worse.

  • »
    »
    5 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +40 Проголосовать: не нравится

    "here will be the same number of groups by problem solved count." — mathematically unfounded and practically false. Say the first guy had 3 problems solved in 2 hours. After 3 hours he may as well get to 4, thus increasing the number of groups of people with same number of problems solved. It is also obvious that it wouldn't be worse from this point of view (the number of groups will be >= than before, so number of problems solved will matter at least as much, that assuming there's not a number x of solved problems that now no longer appears in the standings, which is a decent assumption given the number of participants in an usual round).

    As for "How does the fact that people will solve more problems makes it better?", speed matters but it's generally considered that being able to solve something is more important than being slower at coding. Say the current contest duration is not long enough (not claiming it's not) and that many people have ideas that they didn't get to code. Increasing the duration would allow for more of the overall ideas that participants had during the contest to become relevant in the final rankings. You probably think that there will be more ideas coming up for others in that extra time and that may as well be true. One clear thing that we can say is that as time -> infinity, the results are more relevant. So, although i'm not answering the "how is it better" question, i am answering the "how could it be better" one. Don't see any good reason to disregard the idea, and seeing it in practice could be the best way to get an idea of whether it's better or not.

    "I guess you are just frustrated from "oh, 5 more minutes and I would get one more problem". Let's wait till you get AC in last 5 minutes." — your unfounded guess is nothing more than a proof that you, as well as anybody else, have gone through the same thing several times. Why not try an approach that might decrease the overall number of such experiences? You know, there are people in this world, that based on personal experience suggest solutions that could help others as well.

    Your claim is simply less founded than OP's one, so if you so strongly believe the contrary, then maybe provide some decent arguments.

    I guess a could con for it would be that not as many people are willing to put more than 2 hours at a time into a contest.

    • »
      »
      »
      5 лет назад, # ^ |
        Проголосовать: нравится -24 Проголосовать: не нравится

      After 3 hours he may as well get to 4, thus increasing the number of groups of people with same number of problems solved.

      I'm basing my comment on initial post. Which says this: top guys are usually finishing the contest, let's not talk about them.

      One clear thing that we can say is that as time -> infinity, the results are more relevant.

      Have you said something about less founded claims and decent arguments? time -> infinity is very different type of competition, just like 3 hours is slightly different type of competition, neither better nor worse.

      then maybe provide some decent arguments.

      I kinda believe that proving that topic starter's idea is unfounded requires just proving (or discussing) that all his arguments are faulty, which I believe I did. Topic starter says "people will solve more problems and it is better, yay! And it will help differentiate people by number of problems" I ask "how is that relevant? how +1 will change anything?" You answer "Some people will solve more problems while others won't. So you are stupid" And for some reason I have to tell "that's not what he said at all" ? wtf?
      I'm not stating anything other than "this blog is really really stupid". That's what I'm trying to prove.

      Please go read initial blog. Then you can write a comment to the blog that it is good idea and maybe explain why, looks like you have some half-decent points. Then I could bash your arguments, which I probably wouldn't do because they are not so stupid as topic starter's. Why did you answer to me instead?

»
5 лет назад, # |
  Проголосовать: нравится -43 Проголосовать: не нравится

To add to your point, I could rarely convince myself to upsolve — 2 hours and thats the end of it. On the other hand I would be able to sit through a 3 hour contest and hence will be able to do 1 more hour of problem solving.

»
5 лет назад, # |
  Проголосовать: нравится +72 Проголосовать: не нравится

Top 5%?! In a typical combined division round, top 5% is about 500 people. There's no way even the top 0.5% has a good chance of completing the problemset in time.

I'd like 3-hour rounds, but only if it doesn't end up making skill matter less.

  • »
    »
    5 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Sorry for the misunderstandings. Actually, I tried to say that in a Div. 1 only round around 500-600 people attend. If there are X problems in that round, probably around 25-30 people should be able to solve X/X-1 problems.

    • »
      »
      »
      5 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      20-30 out of 500-600 solving X-1 problems is fine. Ideally, there should be only a few people (like 0-5) who'd solve all X problems. If the top 20-30 have a good chance of solving everything, it's too easy and the top of the standings will be decided by speed.

      Unfortunately, balancing everything out like that is very hard, so you'll end up with rounds where harder problems end up solved by less people or where they're not hard enough.

      • »
        »
        »
        »
        5 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        What is wrong with deciding something by speed? If one participant solved a problem faster then he is probably better. And I don't think that this "probability" is any different of "made the next problem in time" vs didn't. It is also about speed, but for some reason we praise arbitrary cut in time, like 1:58 vs 2:01 is much better than 1:00 vs 1:45.

        I don't see any problems with easier rounds where dozens of people solve everything.

        • »
          »
          »
          »
          »
          5 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          It's not as good as deciding it by the number of solved problems. When there's an easy contest with strong participants, it's normal that the top places get decided by speed, but in a div1 CF round, it shouldn't happen too much.

          • »
            »
            »
            »
            »
            »
            5 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится

            Because?..

            Imagine situation: tourist one participant solved everything in 1 hour. Another participant solved all the problems but one, and struggling to debug his solution to last problem. In one case he managed to debug in time and got AC in 1:58. In other case he didn't and found his bug only in 2:03. In both cases he got second place and lost by a large margin to first place. But by your system in one case he is kinda equal to first participant, and in second he is not. That's insane, right?

            • »
              »
              »
              »
              »
              »
              »
              5 лет назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится

              But by your system in one case he is kinda equal to first participant, and in second he is not.

              Can you quote me on that?

              • »
                »
                »
                »
                »
                »
                »
                »
                5 лет назад, # ^ |
                  Проголосовать: нравится 0 Проголосовать: не нравится

                It's not as good as deciding it by the number of solved problems.

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  5 лет назад, # ^ |
                    Проголосовать: нравится 0 Проголосовать: не нравится

                  ("But by your system in one case he is kinda equal to first participant, and in second he is not." == "It's not as good as deciding it by the number of solved problems.") == false

                  Those are different things. Think about why they're different.

»
5 лет назад, # |
  Проголосовать: нравится +93 Проголосовать: не нравится

I think a better solution would be to decrease the number of easy problems. In most of div. 1 round problem A is not a problem at all. Just write something stupid fast and maybe check some corner cases. And spending a couple extra minutes on A matters much more than spending the same amount of time on E or F. And the more easy problems the round has, the more important is the speed of writing them, compared to the speed of solving hard problems, which leads to "speedforces". It's gotten much worse recently, because for some reason every round has to have 6 problems. It would be better to either return to 5 problems or increase the difficulty of A-C.

  • »
    »
    5 лет назад, # ^ |
      Проголосовать: нравится +17 Проголосовать: не нравится

    The issue is that you want an easy first problem to discourage people from doing something like reading the first problem, seeing it is too hard, and then just quitting the contest

    • »
      »
      »
      5 лет назад, # ^ |
        Проголосовать: нравится +1 Проголосовать: не нравится

      So what? Yes, it affects rating, but rating doesn't matter anyways.

  • »
    »
    5 лет назад, # ^ |
      Проголосовать: нравится +17 Проголосовать: не нравится

    Just write something stupid fast and maybe check some corner cases.

    Now that's a recipe for failure. You have to think to solve A, it's just much easier and faster for you than for a random orange guy. You need to realise that CF contests aren't exclusively between people with close skill levels.

    And spending a couple extra minutes on A matters much more than spending the same amount of time on E or F.

    Yes, but spending a few extra minutes on E or F doesn't matter much. Whether you can solve the problem matters. Then, whether you can solve it without getting WAs on pretests (a much bigger loss of points than solving A slightly later) or spending much more time on it matters.

    • »
      »
      »
      5 лет назад, # ^ |
        Проголосовать: нравится +40 Проголосовать: не нравится

      If you accidentally make a small mistake in problem A (my favorite kind of mistakes, because I usually code first tasks in a hurry), spend five more minutes than necessary, and solve five problems $$$(500-1000-1500-2000-2500)$$$ in the contest, then you'll lost $$$5 \cdot (2+4+6+8+10) = 150$$$ points, which is much more than a single WA on pretests.

      • »
        »
        »
        »
        5 лет назад, # ^ |
          Проголосовать: нравится -28 Проголосовать: не нравится

        If you get a single WA on pretests of E, spend 10 minutes to fix it (so it isn't completely trivial) and then get AC, you lose just as many points. If you get another WA and spend another 2 minutes, you lose ~50% more points.

        If someone spends 15 more minutes on E than you with absolutely perfect performance (no small mistakes or wasted single minutes, apart from that 5 minutes on A) for you both in A-D, you're still equal. In reality, other people will also make mistakes and probably lose more time on them. If we're talking about cases with near-perfect performance, though, then taking a few more minutes to solve an easy problem might as well be what distinguishes between two people who solve everything quickly.

»
5 лет назад, # |
  Проголосовать: нравится +19 Проголосовать: не нравится

I completely agree with you ...when we solve any problem in contest there is completely different mindset ...I think our mind works best in case of some pressure ... definitely it will give more time to solve a problem because in my case I have been solving 3 problems in time...I had get the idea of 4th problem but I am not able to implement it on time ...and it feels bad but if I have some more time I will be able to implement on time and it definitely increases confidence... that's my personal opinion and I think that's happens to everyone..

  • »
    »
    5 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится

    Start with the 3rd task, solve the first two after that 4'th one.

  • »
    »
    5 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    That has happened to me many times recently, but I think we should learn from it. What I mean is that every problem has a thinking depth and how fast you solve a problem depends on how fast you travel across that. When you become an expert from a specialist you improve on this for the first time, to get better ( at the problem solving ) you need to get better at it ( at fast traversal across thoughts and possibilities ). And how? By solving more problems, spending time on thinking them, noticing the wandering of the mind ( and trying to bring it back ). Our goal should be to improve rather than doubting the system's configuration as a limiter to our talents. I hope this helps!

»
5 лет назад, # |
  Проголосовать: нравится -16 Проголосовать: не нравится

Cool

»
5 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

if contests were 3 hours long, still someone's think that they could solve more! also 3 hours is too much and boring maybe.

»
5 лет назад, # |
Rev. 2   Проголосовать: нравится +17 Проголосовать: не нравится

I mean, people will still be separated by speed, but I guess it seems more fair for everyone to be able to solve the problems that they can solve.

One of the main issues I can see with this is that 3 hours is frankly quite long. The lack-of-time issue has been brought up, however, I think another issue would be loss of attention. For example, there is usually a significant difficulty gap between one of B/C and C/D, as well as between E/F. If a contestant is able to solve ABC in one and a half hours, they might not be able to solve D unless you give them a few days, and will consequently sit there for one and a half hours doing the equivalent of nothing. Some might be able to keep their attention on trying to solve D, but I think most would give up.

I'm not sure if there's a Speedforces effect, since I usually feel a fairly significant difficulty gap between questions I solve in contest and those I fail to solve in contest. Since Codeforces doesn't have subtasks, tiebreaking by speed is really the only way to not end up with 7 different scores in total. I assume Speedforces refers to the effect by which everyone solves some set of easy problems but very few people solve some set of hard problems, resulting in a lot of people being tiebroken by time. It's obviously not fair to people who have slow implementation speeds and take a long time to solve the easy problems, but could have solved the hard problems given more time. However, I think this is also a problem with real programming contests (and anything with a time limit). Speed is not secondary to skill, but is part of the skill itself. I'm also not sure whether extending duration will actually stop Speedforces effect.

Overall, I think this is an interesting idea, but I'm not really convinced that changing duration to 3 hours will actually solve the problem.

Edit: "is 3 hours optimal? what about 4 hours?" will always be an issue. I guess everyone has their own opinions on optimal contest duration, and it's the job of contest organisers to find a compromise that can satisfy most people. I think the current 2 hours is doing a decent job, but maybe I'm wrong and more people will be happy with 3 hours.

»
5 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I'd vote for more time if I was younger and could devote 100% of myself to learning. Nonetheless, as life goes on, there are other projects and activities that must be completed and time becomes as sparse as ever. If a contest is longer, I must afford more time... since once the game starts, we are unstoppable. Hence I believe less time such as 2 hour or less is better as I just want to enjoy coding in the least amount of time I could afford.

»
5 лет назад, # |
  Проголосовать: нравится +9 Проголосовать: не нравится

Back in a day TopCoder was the most popular platform in the world, and they had events that were <2 hours long, with ony 75 minutes were for coding. People were fine with that :)

Thanks for sharing your thoughts and opinions; after reading your blog I got an impression that what you basically did was saying "I prefer 3h contests over 2h contests", without proper reasoning on why it would objectively be better.

I personally like 2h contests more; I'm not going to try to prove that they are "better" either :) But for me the main drawback is about ensuring that I have time for 3h contest, which is much harder than doing same for 2h contest. For similar reasons I haven't done any long contests in a while — even though they provide sufficient flexibility, I'm not nearly as serious about competitive programming as I'd have to be in order to find sufficient amount of time.

Maybe it is possible to make everyone happy by having some contests that are shorter and some contests that are slightly longer :)

Random rant from my side: I am not happy at all when contest organizers can't figure out contest duration; like when you have different numbers in upcoming contests and in the announcement because the announcement was mistakenly copied from a previous round, or when AtCoder admins decide on round duration in the morning before the contest...

»
5 лет назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится

But from the top, 50% or even maybe from the top 25% would feel that they could solve another one if there was more time. That's true for everyone else too I guess.

This is quite a bold claim. I can't tell for others but from my own experience, I wouldn't solve more problems most of the times if I was given 1 more hour. If the problemset is balanced, you should already solve all the problems you are supposed to in the given contest time. The ones you don't probably require much harder insights/observations for your level, which an extra hour likely won't help you.

But my point is maybe 2 hours is too low for a contest.

A normal contest lasts for 2 hours but people often spend time discussing problems, waiting for system test and upsolving after the contest. That's already a significant time investment for many people (not only contestants but also admins, coordinators and problemsetters). Then, there is also the problem of people from different timezones.

If you ask me, I would prefer a 90-100 min contest without Div 1 A because those are boring and I'm not good enough to solve harder problems. That's just to show you how subjective it is to find out the best duration for people.

»
5 лет назад, # |
Rev. 2   Проголосовать: нравится +35 Проголосовать: не нравится

Just some histograms submits/time. All info is in legend

More histograms