SPatrik's blog

By SPatrik, history, 3 years ago, In English

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.

 
 
 
 
  • Vote: I like it
  • -29
  • Vote: I do not like it

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

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.

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

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

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

    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.

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

I wholeheartedly agree.

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

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.