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

Автор satyam343, 3 месяца назад, По-английски

I am the coordinator of Codeforces Round #965 (Div 2).

Let me explain the situation behind the hard Problem C.

Initially, we planned to have the following C1 and C2 in this round.

Problem C1
Problem C2

However, two days ago, a tester shared a LeetCode blog link that contained the solution to C1, though it didn't help much with C2.

As a result, we had to remove C1 from the contest.

At that point, we had two options:

  • Introduce a completely new problem as C.
  • Use the previous C2 as C.

Since finding a new Problem C proved challenging (trust me, it's very hard to come up with good, easy problems, especially when you're aiming for a specific difficulty), we decided to use C2.

Recognizing that C2 seemed harder than the usual Div 2 Cs, we took the following steps to make it easier:

  • Simplified the problem: The previous C2 required contestants to observe that there always exists an optimal distribution of elements such that there is only one element in $$$S_2$$$. We modified the problem to eliminate the need for this reduction.
  • Enhanced samples: Testers noted that the problem was still more challenging than typical Div 2 Cs. Based on their feedback, it seemed to be rated around 1600-1700. One of the main reasons many testers received WA was due to incorrect implementation of binary search. To address this, I decided to include strong samples so that such bugs could be caught during sample testing.

It seems it did not help much. I am sorry for that.

So I checked the expected rating of C in Errichto's Discord server, and it shows the expected rating to be 1752.

I don't think it is too bad for problem C. Well, recent Div 2 Cs have been quite easy, so you might argue that it was very hard for C and all that. I do agree that the gap between problems B and C was huge, and I should have done something about it. But it was quite hard to add a problem of suitable difficulty this close to the round.

Also, I prefer having an interesting, slightly unbalanced contest over a boring, balanced contest. Although it is still possible to have an interesting, balanced contest, and I will try to ensure that my future rounds, which I coordinate or author, reflect this.

Also instead of downvoting the announcement of editorial, you can downvote this blog. It is not like that upvotes matter that much, but I don't want the blog by cry to get downvoted for my decisions.

Lastly, get good and learn binary search properly.

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

»
3 месяца назад, # |
Rev. 3   Проголосовать: нравится +206 Проголосовать: не нравится

I just want to say, satyam343 was the most responsible and hardworking coordinator I’ve ever worked with. Ever since this flaw was discovered three days before the contest, he has worked tirelessly on salvaging whatever we can from C. Proposing a whole another problem was unreasonable since we had to come up with an idea, prepare it, and get it tested within three days. That’s basically a recipe for disaster.

Even I thought this round was going to be doomed for sure, but it was somewhat saved. I want to give huge thanks to our testers for discussing this new change with us. But at last, we did the best we can in the time we had left.

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

I think it's a good problem. I bugged for some reason but still good

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

C was tougher than usual div2C — yes! was it a good problem — yes and would've been much better at D imho (or C2 as planned prev) but yeah, nice round and cool set of problems!

»
3 месяца назад, # |
  Проголосовать: нравится -26 Проголосовать: не нравится
»
3 месяца назад, # |
  Проголосовать: нравится -65 Проголосовать: не нравится
Lastly, get good and learn binary search properly.

Nice way to end whatever this is you posted :clown:

»
3 месяца назад, # |
  Проголосовать: нравится +14 Проголосовать: не нравится

As a tester, I am bad at binary search, and thus found solutions that did not use binary search.

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

"I prefer having an interesting, slightly unbalanced contest over a boring, balanced contest"

Well,I think the contest was pretty interesting. I liked C :)

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

As a participant, I am not asking you to change problem set. I am fine with hard problems. But, my only ask to you is, GIVE POINTS ACCORDING TO DIFFICULTIES. . How big of change is there, if you simplly give more points to harder question ?

Today, C problem was quite difficult, and quite confusing at the same time.

If you have put efforts in making test-cases, and making entire problem-set, we appreciate it. that's why we also don't expect the last minute changes, but changing the points distribution is the least you can do, to make the contest FAIR !!!

All the best for your next problem-set. satyam343, cry.

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

    The painful of "C" problem in this round is very familiar with 961 div 2. But still can't blame all of the responsibility on the Problem Setters.

    Yep totally agree man I just hope to see a "fit" score to expect what kind of beast I'm facing and not totally ruined the problem/contest itself.

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

    Another long night, gonna lose some sleep again...

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

    score distribution is for relative difficulty and not absolute

    I do not believe the score distribution was way off

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

      Let's do basic comparision,


      let problem = someNewProblem, problemPoints; if ( difficulty(problem) == usualC_problem) { problemPoints = 1500; } else if (difficulty(problem) > usualC_problem) { problemPoints = 1750; } else if(difficulty(problem) < usualC_problem) { problemPoints = 1250; }

      This is my logic to decide points for problem C.

      One can further argue, that what is the UsualC_problem difficulty defined as, anyone who has given descent number of rounds on Codeforces, would know that what an UsualC_problem looks like.

      Now, Please try to see, in first 45 minutes of the contest, how many Div2 people solved C problem ? ( eliminating Div-1 participants ) . Does that tell you, that problem was difficult that UsualC_problem ? For you it might not be, because you are Red, but try to put yourself in others shoes.

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

        I don't think 1500 has to be the "standard C problem score" and it should rely more on the relative ratio between problems, so when problem B has lower score then the harder problems can get less score too.

        But I do agree that the jump from 750 to 1250 wasn't nearly as enough and maybe C — D — E1 could all have like a score of 1500.

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

        Your logic is wrong. It doesn't make sense to compare point values of problems from different CF rounds, because the point values have no meaning on their own.

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

Thank you so much satyam343 for caring to write this blog and to explain the background.

I struggled a lot with C and did not get it eventually. Many thanks again to the problemsetting team cry who brought us this round! It is easy to criticise after having not that good a contest but much more difficult to create something that so many of us participated in and enjoyed.

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

Where's the LeetCode blog link? I'm interested in that.

»
3 месяца назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

To be honest, although this is tougher than I thought, atleast I learn something new over this and I think you guys are trying your best to make this as balance and good as possible. Hope your future round will be improve and don't make a huge mistake like this

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

Pretty amazing Round.No complaints just need to improve my skills :)

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

Generally i think div2Cs are from 1400-1700. So while a bit tougher, I think its ok.

Personally didnt like seeing the disparity between B and C, if B was a bit tougher like 1300 ish than 900-1000 I would be fine.

But well. You make great problems, can't wait for your future rounds orz.

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

Where can you solve bin search?

»
3 месяца назад, # |
  Проголосовать: нравится -11 Проголосовать: не нравится

blud fr tells you its ur fault for him making a trash problem XDD

»
3 месяца назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

Lastly, get good and learn binary search properly.

I don't get why people say this. Once you have learned binary search, you have learned it. Learning how to use it is much different, and imo using it in unique situations is very dependent on IQ.

Like if a 2200-rated div. 2 C had a tricky application of binary search, would you also say "just learn how to use binary search" and call it a day?

Btw, I don't think it was a bad problem. I like when div. 2 C is hard so I don't need to worry about div. 2 D. Anyway, I just think that your comment there is unnecessarily incendiary.

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

    Dudeee.

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

    I feel like you are trolling with this IQ nonsense.

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

      Job productivity and IQ are highly correlated, especially when the job is cognitively demanding. You might expect a correlation of r = .5, when corrected for range restriction, between IQ and performance at a cognitively demanding job.

      Codeforces is more cognitively demanding than pretty much any job out there. That is because people here like to think, and thinking is all people here do (well, except when they're commenting). Therefore, it is not unreasonable to expect a correlation greater than .5 between codeforces skill and IQ. This means that IQ accounts for at least 25% of the variance in codeforces skill. And this is a conservative estimate, too. Now I hope you can see that I'm just spitting facts.

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

Lastly, get good and learn binary search properly.

It reads as if you blame the participants instead of recognizing that this is a bad problem or maybe there are flaws in how you presented the task. You perhaps should have given the participants a few things that could help to do better rather than suggesting they were struggling simply due to a lack of skill.

»
3 месяца назад, # |
  Проголосовать: нравится +12 Проголосовать: не нравится

After all that long nonsense. Then at the end, "it's your fault as a participant, you should learn binary search"

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

It's better to have only 2-3k solves on a Div2 C than 9k+ solves like the recent Div2 contests.

Yes, I also agree the rating points for this problem was not enough, but it was still a good problem, nonetheless.

People just love to blame their poor performance or inability to implement a solution on the problem-setters. There was nothing confusing or wrong with this problem.

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

    Why? Don't we have D-F to distinguish between these 9k people?

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

    You are correct. Ideally, it should go

    C — 2k

    D — 500

    E — 40

    F — 0

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

      lol, good one.

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

        Well ofc I am being serious. The point of div. 2 is for div. 1 users to flex their ability to create super hard problems on us noobs.

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

          If you haven't solved E1, just (stop being poor) learn to binary search

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

            bro you only need ABCD + decent time to get a rating over 2100. E1/E2 are overkill for us in Div2

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

              This is a div2 round. The problems should be relevant for a div2 audience, not GMs. Also, this time E1 was on the easier side.

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

                I meant to perform at a 2100 + level, the point is that one is not poor if they failed to solve E1, if they successfully solved E1, they are well on their way to being in Div1

»
3 месяца назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

The problem itself is great, it's just a poor choice for a div2 C. It's rated somewhere between 1700 and 1800 (likely closer to the latter), and thus putting it into the easy half of the contest targeted at participants up to 2100 seems slightly inappropriate.

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

    That's what I said, but Shreyan "Dominator" Ray doesn't agree to that. donno what to say ...

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

      Please get your argument straight

      I dont want to argue on whether its fine as C or not (honestly i dont care)

      Score distribution wasnt way off, judging problem difficulty from score distribution and then getting annoyed is your issue.

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

You are such a clown for the last line. Let me break what you just said here : the purpose of a problem co-ordinated at certain place is to be solved by targeted rating ranges, In this case by [upper pupils to expert], you can have good 2500 rated Binary search problem in D2C and call participants stupid cause they cant implement it? Such stupidity is unreal.

Down one hour 30 minutes in the contest C had like 900+ submissions is this expected for D2C? You fucked up bro stop being lame. And the average rating is a joke, all thanks to cheaters the average rating of normal C's are 1200 which is stupid to me they are not 1200 problems, and in last 20-30 minutes the submission of C was almost doubled which actually lowered the average. So you better acknowledge what happened here instead of making lame excuses.

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

You did not need Binary Search for C. just use nonsense greedy :)

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

So many people are divided over the last line(of the post). It is also having negative effect on the seriousness of the post

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

problem itself was cool I think, gather all concepts in single problem greedy, binary search, brute force.

just wrong score were assigned

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

can someone prove the fact that one of the two empty subsets must contain only one element? and what would be the final distribution overall, I mean like should it be the maximum element in the empty subset or it might be another element?

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

    The basic outline is as follows: sort your array, take the max and the remaining median (v_i). Now prove we can't do better. Notice that this is the largest answer with the smaller element being v_i. If there's a better answer, the smaller element must be >v_i. Therefore, we should split our array into two sets both with medians >v_i. This is, however, impossible because there aren't enough elements >v_i in the original array (follows from the definition of the median, I'm too lazy to do it here).

»
3 месяца назад, # |
Rev. 3   Проголосовать: нравится -16 Проголосовать: не нравится

Stop running away from your responsibilities and blaming it on us.

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

    to be clear i just had to let this line out lol loved the contest.

    great problem, just some shaky scoring.

    btw i love cry i use your template everyday i added you on genshin too

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

You were supposed to use binary search?? I made a completely different solution lol that just used two pointers moving away from the median. I think it was a very cool problem

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

Thanks for the explanation.

But this line: "I prefer having an interesting, slightly unbalanced contest over a boring, balanced contest." — Is a very sketchy one. Usually balanced contests are more fun because there is a chance to solve something outside of your usual level. And such big gaps are a bit problematic.

I personally think C is good. In my, again, personal opinion, it just doesn't really fit inside the given time limit. It's may be more fun to encounter it in Olympiads/rounds with 3 to 5 hours to solve, maybe even on team events. For this Div 2, it was a killer.

*upd: given its score on the distribution, I'll repeat this again.

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

    Counter example : AGCs are hailed to be few of the best contests. They also have some of the most unbalanced distributions.

    I truly believe that in non extreme examples, interestingness is way more important in problems than difficulty balance.

    Sure you might be lucky and have a balanced but also interesting set, however thats quite rare, and to actually manage tbe balance you would have to impact interestingness in some way (either use a easier problem in some position / make a problem artificially harder etc)

    Contests are not just 1 contest and then its over. Its a continuous game and you will eventually reach the rank you deserve :)

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

      What are your thoughts on the weak pretests for this contest's problem A? In the last week's Atcoder regular contest, the first problem had a similar edge case compared to this problem that a lot of people missed initially including you. Imagine if that was a codeforces problem and it passed pretests and then FSTed? Don't you think that there should be strong pretests?

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

        i have looked at the wrong submissions, and the error is not possible to catch without knowing the error beforehand....especially with only having t <= 100 due to it being A

        I dont think this is a case of weak pretests in any ways, but stupid submissions which fail on a very small minority of cases. Do note that the test was introduced through hacks by somebody looking at other people's codes and not intentionally left out. (infact currently systests = pretests + hacks i believe in cf)

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

          I didn't realize it was introduced through hacks, then it makes sense obviously. But if it was intentionally left out, then it would have been a case of weak pretests in my opinion.

»
3 месяца назад, # |
Rev. 3   Проголосовать: нравится +4 Проголосовать: не нравится

Thanks for a wonderful contest, but...
Editorial code for Problem C doesn't work for this valid test case

Testcase

satyam343 please look into this.

»
3 месяца назад, # |
  Проголосовать: нравится +10 Проголосовать: не нравится

After all these rude and frankly unproductive comments, I would like to share my constructive feedback on this situation.

The primary issue with ratings in general is that it ignores a key component, TIME. Some problems are not necessarily hard, but due to their nature, they take a long time to solve even for high rated participants. This problem C is a good example of that. It was pointed out that the majority of solves came after the first hour. A similar thing occurred on the recent Teamscode contest, which I was a problemsetter for. This contest had way more of the long but not necessarily difficult problem types. Some problems simply have lots of small details that invite buggy code. Of course some high rated participants can process through the details much faster and are able to better avoid buggy code, but these are exceptions. The editorial may have a clean solution, but the majority may have messy implementations.

For the participant, the goal is to simply improve on implementation. However, it would be good for contest quality if this is taken seriously. If a problem is found to be taking testers a long time to solve, it should be reevalutated. Maybe shuffling the problem set for testers would lead to less bias towards earlier problems. The simplest fix is to increase the contest duration. The goal is to try to avoid these situations before it comes to late.

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

Hi, I’m the tester that found the link. I would just like to add that I also found the same problem in Google Kickstart 2022 Round D: Image Labeler.

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

    Also something interesting I just remembered, they actually had a different C1/C2 proposed earlier that had better difficulty balancing in my opinion.

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

I do not know what is the meaning of the array b, could cry give me the answer, thanks

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

Although proclem C is a little bard,but it is also a great round.Hope the round will be better!

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

The problem is great! That is one Div.2 C just slightly harder than expected.

I have a guess about the high difficulty: I have got 7 (or 6) WA2 in the contest until I got AC, and every time I found a different bug. I was astonished that such a bug-rich solution could pass the samples. Such sample isn't unusual, most of the codeforces problems have samples much weaker than this, but this problem is not so easy to code (without a bug) for coders like me. Thus, the problem is not difficult to come up with a solution, but is difficult to think through all the details in the code.

Such problem is necessary in CP. When you encounter a bug, you must find the origin of it. I believe over-debugging is not the reason to consider the problem as "too hard". However, I prefer samples of more strength, as I am novice at debugging :-)

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

Problem C was nice and I am happy to solve this in the contest

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

Satyam why are you running away from the fact that you only assigned 1250 points to C?

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

I found the binary-search solution in like 40 min after the beginning of the contest and then left due to understanding that I have no interest in debugging it for another 1 hour. IMHO, there is no need to include implementation-based tasks like that in short rounds (although the problem itself is great).

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

C was good and not so hard for its position as others claim. There have been harder C's before. Yes it was a bit heavy on the implementation side (and I fucked up since I missed an overflow error) but that aside no reason for people to complain.

The round had cool problems and a good difficulty gradient. Please set more rounds in the coming days.

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

it was a very good level problem everyone stuck on it. but i think we need more problem like that, keep woriking hard nd bring such challenging problem in upcoming contest, at the end all the best satyam343

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

I loved the problem! I just kinda failed to be greedy(until it was nearly too late)....

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

perhaps you might make a C1 like all b[i] equal to 0/1 ?

»
3 месяца назад, # |
  Проголосовать: нравится -8 Проголосовать: не нравится

Nah bro whatever, C was shit.

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

Cf