NotRedCoder's blog

By NotRedCoder, 5 years ago, In English

Let's take the real-life scenario of the last round:

Swistakk solved ABCDFG and got 51st place, but would have gotten the 12th place if this was an AtCoder round as he was surpassed by 39 users who speed solved ABCDEF.

Now let's take a more extreme hypothetical example:

There is someone who solves G with 30 incorrect submissions in the last 5 minutes and someone who solves B within the first 10 minutes of the contest. Who do you think should be rewarded more? CF says the one who speed-solved B.

So for CF rounds, speed-solving is sometimes more important than problem-solving!

Do you think that this is justified? If so, why?

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

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

Every system has it flaws. Consider the rules of DIV3's and ER's:

If someone solves ABCDEF and gets hacked on A people who solve ABCDE will beat him (in general because solving them takes much less time) although A isn't even comparable with F in terms of difficulty.

But I think the rules of usual CF rounds are roughly fair with everyone, making a lot of wrong submissions should be definitely penalized, and solving a problem faster than others should be definitely rewarded.

But maybe there can be some update and cap on the number of points we cannot go below in penalty (Because I think after like 10 submissions contestants stop counting)

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

    There is a cap, no matter what you'll earn at least 30% of the original score for a solve (source). Also, I can definitely corroborate the "after like 10 submissions contestants stop counting" thing :P

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

      10 submissions threshold, That means -500 already, time penalty extras.

      it's still not good, but ofc better than current situation.

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

Well being a competitive programmer, you should find optimal way to get as much as score as possible. You might saw in some Div1 contests that sometimes tourist, um_nick solves B before A to get better score. Rules are same for everyone, it's just a matter of luck instead of system's flaw :)

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

It is a matter of points distribution. If A and B would get less points than the usual 500/1000 they would be worth less.

From my point of view the default should be to double between problems: 500 1000 2000 4000...

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

    I like the idea that an ascent in difficulty is rewarded by making it worth more than everything solved so far. (D>C+B+A). At the same time this necessitates very careful problem-setting and also encourages contestants to throw themselves on the hardest problem they believe is in range, which could seriously disrupt the contest flow and structure.

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

      A better system would be the AtCoder system which doesn't have any dynamic scoring and time only acts as a tie-breaker in case of same score.

      I think ICPC style scoring is justified because it doesn't disclose the difficulty before-hand and moreover 5 hours and a team of 3 make it almost impossible not to solve an easier problem, but the same isn't the case with div. 3 or educational rounds.

      I don't like the (D > C + B + A) system because that just puts a lot of pressure on the problem setter to make some problem more difficult than all previous combined.

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

      i think it has a flaw like if i know i will get more points for D that i would just jump on D and solve it than C B and A and someone who start from A and got stuck on some lengthy b or c will not get that much point!!

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

    I also think it should be exponential but the factor should be smaller. Maybe something like 1.5x or even less.

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

Argument about 30 incorrect submissions looks irrelevant, because it is highly unlikely. But seems that speed of decreasing cost of the problems indeed is too high.

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

Agree with op. Fast solving easy questions naturally gives advantage anyway(more time for harder problems). I think codeforces is over emphasizing speed.

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

What? But I was heavily downvoted when I assumed that speed matters even when you get to higher ranks.

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

    It might have come across as you trying to advise the person. Well, one thing you should know about the CF community, ain't nobody interested in taking any advice from a newbie.

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

      Yeah I forgot that ratism existed lol(Next time I'll just use an alt)

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

    Your other comment is wrong. When you can solve, for example, three problems A,B,C does not matter how fast you are, you are going to have a better rank that all the people who just solve A and B (in a constest like regular Div2).

    Also, about you other comment. Of course speed matters, but if you can only solve Div1A and Div1B no matter how fast you are, you are not going to be red.

    What OP is saying is something regarding the problems point distribution system.

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

I think difficulty is just a relative term.you can't judge a problem by its points sometimes I find C difficult than D or E.If a person can't solve B faster than G.this means that he faced more difficulty in solving B than G.Current Codeforces points system seems fair to me.

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

Man, this is how every olympiad in programming and maths works. Besides solving extremely hard problems, you should be able to get rid of some easy problems quickly.

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

    But in those you usually have way more time for less problems.

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

Well, every OJ with contests has its own rating (calculating) system, and CF is just different from others in this, I suppose. So if you don't like CF's rating system, you can just change to Atcoder and etc. But try not to make everything what they are in your opinion.

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

I definitely agree and it is a big problem in my opinion. On Codeforces score distribution often pretty poorly corresponds to the actual difficulties of problems. It is very typical to see pretty easy D worth 2000 pts (which is solved by, say, 20 people) and some killer E worth 2500 pts (which is solved by 0-1 people). In such cases even if you are the man and solve E then you are still probably behind someone who solved D at 1 hour mark. If you are not among the very first ones to solve all easy problems then you need to do miracles on hard problem to get a good place (having less time to solve them is of course a fair disadvantage resulting from that, but you are far behind in points as well). And even if you solve some hard problem you can still be completely screwed if you fail system tests on some easy problem like B because of some stupid bug. AtCoder does much better in my opinion in terms of good scores distribution and taking maximum time.

I would actually suggest the following:
1) Lowering the drain of point with time by half.
2) Change the meta of assigning scores to problems to be more stretched on the high end, for example do not be afraid to use "500+1000+1500+2500+4000"
3) If possible, allow scores to be multiples of 100 (instead of 250) what should give more flexibility and allow better adjusted scores.

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

    I thought it was intentional that the points per difficulty was highest for the easiest problems, so that the "optimal strategy" is to do a prefix of the problems (barring some problem randomly being easy or hard for you specifically, or the problems being misordered by the author).

    If you make it so that doing D instead A & B may be a better strategy, but may not, then you introduce a lot of random variance where you might just happen to choose the wrong problems to focus on (I think).

    Sidenote: To be fair, this already exists a little bit, for example if A and B are equally easy for you, then technically you should do B first to get less time-decay.

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

    It is very hard to estimate difficulty of the problem, so I dont like idea about 100 multipliers. Agree with two other proposals.

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

      I understand that 100 multipliers may sound look unnecessary, because it doesn't make that big difference whether a problem is worth 3000 or 3100 and you can always "round up" to the closest multiplicity of 250 if your perceived difficulty, but think about it this way. Assume we have 3 problems that are supposed to go on ABC slots, there are significant difficulty gaps in them, but all of them are rather easier than typical problems on ABC positions. In that case what will happen is that they will likely get scores 500-1000-1500, because that would feel weird to have two of them too close to each other even though 300-700-1000 may feel much more adequate. Such differences stack up especially when you have least flexibility in the easiest problems. Having 100 multipliers would allow much better "relative" scores.

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

It seems that making the point distribution more accurate across problems is getting a lot of favor.

Here are some ideas form math contests: HMMT and PUMAC. Maybe points can be adjusted based on solve counts, though idk if this is right for CodeForces

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

I dont think it matters much, people who solve harder problems during the contest are more satisfied than those who solve easier problems. Also, solving harder problems guarantees becoming better at cp in the long term.

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

I think minimum possible score for problem 'i' should be greater than maximum possible score for problem 'i-1'

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

There is someone who solves G with 30 incorrect submissions in the last 5 minutes and someone who solves B within the first 10 minutes of the contest. Who do you think should be rewarded more? CF says the one who speed-solved B.

By design of the codeforces contests the user is supposed to first try solving simpler questions and I believe everybody here understand it

So if such an extreme case ever happens, it would mean that the first person consecutively failed to solve ABCDEF and then found G which happened to be exactly the algorithm, that he learned about recently and had a related article on hands or even the code. Even so he failed to adjust it accordingly and submitted the wrong solution for thirty times.

Why should he be ranked higher?

Or he is not interested in the rating and purposefully avoids easier questions. I'm not sure that the system should target at such people

I don't think that the current system is perfect, but it makes sense to me