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

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

I really got fed up with codeforces pretest and main test system. This system makes every contest a game of luck. Let's say there are two contestants: A and B. They both solve a problem incorrectly. Contestant A submits his code and gets pretests passed, while contestant B gets WA on pretest. Now B moves on and will get 0 points for this problem, while A can easily spot the mistake in the code and correct it. He gets 50 points penalty, and he gets the score for the problem. So what was the difference between A and B? A was lucky because he got WA on pretest and got the score for the problem, B was unlucky to pass the pretests and he got nothing. Of course it is said to check your solution, and it is your responsibility if you get WA on main test, but still it costs lots of time (too much time for 2 hours contests) to check every single solution and even if you spot a mistake, you still get the 50 points penalty for resubmitting your code and the time penalty. This pretest and main test system is ridiculous and shouldn't be continued in such a way. I could think 2 ways to make the system testing fair and removing the factor of luck:

1: Your solution gets tested when you submit your code. If it pass tests it is ACCEPTED and there won't be more tests at the end of the contests. If it doesn't pass tests, you get penalty as usual. This would make slightly easier to solve problems, but this advantage would be good for everyone, so it wouldn't affect the contests results.

2: There are no pretests at all. You can submit your code and you don't get any feedback from your verdict of your solution. You can change your solution till the end of the contest. There are no penalty for resubmitting, but only your last solution will run on tests (after the end of the contest) and you get time penalty also according to the time you submitted your last solution. This system would make much harder to make a good solution, but this would be fair for everyone.

These are my suggestions. If you have any other idea feel free to share.

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

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

This point of view could make sense if CF had the only round. But at a long distance codeforces displays your coding abilities quite fair. If you are unlucky in one round, just take part in another.

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

Edit: I missed a part of the post. I agree with andreumat and prakhar17252's points.

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

    That's something I mentioned on my post. Read it before you make troll comment. I don't believe anyone could always make solutions which gets accepted on the 1st trial.

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

I wholeheartedly agree.

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

Having the code run on all tests would increase the server load by a lot leading to a longer queue and slower feedback. Secondly, there might be hacks that fail solutions that might have been passed at the system tests. If they are added to the main tests at the end of the contest, you still have a chance that your solution might fail. If they are not added, it would be unfair to people who had their solutions hacked vs the people with wrong solutions who were lucky enough to escape. If there is no feedback in the whole contest, the whole purpose of hacks becomes pointless. So I think that the current system is much better than both the alternatives you suggested.