You may read complete rules here.
The text contains only preliminary rules of Codeforces contests — something surely will change. In particular, I hope to help the community to find the illogic in the rules. However, I have already discussed the format with programming contests dinosaurs and made unrated alpha contests — it seems rules are OK.
I think than the format 5 tasks x 2 hour is quite good. For this reason, in the near future we will not change it, but of course, experiments are possible.
1. Before the competition all participants are divided into rooms, each room contains about 20 participants. For now random strategy works, but after a while it will be somehow correlated with the rating.
2. The start of contest looks quite like ICPC: all problems immediately available for viewing/solving, the statements are simple and understandable. Choose the problem and begin to solve it. I think the idea to order problems by difficulty is good. The aim of the participant is to earn as much scores as possible.
3. The cost of the problem can be determined by the following table. For example, if the problem B was solved after 10 minutes of contest, then it costs 1000 — 4 * 10 = 960 points. For each attempt there is penalty of 50 points. So, if the problem B was solved after 10 minutes from the beginning with the third attempt, the score for it is 1000 — 4 * 10 — 2 * 50 = 860 points. However, no matter how much attempts you did and when you solved the problem, the cost of the solution can not drop below 30% of points (see the column "Min. Score (30 %)").
Min. score (30%)
Loss (points per minute)
Score at the contest end
4. And now comes the time when you solved the problem and submitted it. It will be checked only on preliminary testset (also we call such tests "pretests"). It is known that pretests do not check solution completely. Usually there are 2-10 pretests, and the fact that the solution passed pretests says only that it is quite reasonable. Typically pretests not contain the maximal tests, corner cases, etc.
5. Once your solution passed all the pretests, you'll get points for solved problem (see formula I described above). Also you now have an alternative — that is, if you are confident in the correctness of your solution, then you may want to lock this problem for yourself. If you have locked the problem, you will not be able to resubmit it under any circumstances. On the other hand you'll get the interesting possibility of hacking other participant's solution of participants from your room.
6. If during the contest, you have solved the problem, then it is locked, you can view and try to hack solutions of participants from your room. In the process of hacking, you can offer a test (or a generator program which outputs it to the standard output) on which hacking solution will not work correctly. If your test really breaks hacking solution, then it will become "Hacked" and its author will lose scores for it. Also he/she will receive announcement about successful hacking attempt and if the problem was not locked by him/her, author may fix the solution and resubmit it. But while resubmitting the solution will be judged not only on pretests, but on the hacking test(s) too. The hacking tests are unknown to the victim.
7. The target for any hacking attempt is the last currently accepted solution for this problem.
8. You may resubmit the solution at any moment, but it may reduce your score. It happens if resubmission is successful (i.e. passes all the pretests + previous hacking attempts). In this case, the previous successful attempt would be considered as a reason for penalty (see item 3).
9. After a successful hacking attempt you'll get 100 points.
10. After unsuccessful hacking attempt you'll lose 50 points.
11. If you have locked a problem, but your solution has been hacked, then you can still hack other participant's solutions.
12. Hacking attempt should contain a manual test or a test generation program (generator). Generator is a program which outputs the test to the standard output. The generator should always give the same test, for example, you can not initialize the random using the current time, etc. In any case, you have to follow very closely the format of the test. Each line should end with a newline.
13. Hacking attempt can be ignored. This happens in several cases: the test is invalid, generator fails, victim resubmitted the problem while hacking, concurrent hacking attempt was successful.
14. Of course, during the competition it is forbidden to communicate with other participants, share ideas, solutions or hacks. In general, violation of the rules of sports and personal ethics can lead to disqualification. It is prohibited to access the network, attack system security, work with filesystem, try to hack the judge and etc. In short, respect yourself and others.
15. Solutions and test generators can only use source code completely written by you, with the following two exceptions:
- 1) the code was written and published/distributed before the start of the round,
- 2) the code is generated using tools that were written and published/distributed before the start of the round.
Any usage of third-party code should not violate the right holder’s license or copyright. Remember that published code is not always free to use! At the request of the right holder, any code that violates the license or copyright may be considered as violating the rules.
All the changes in the code from exceptions 1) and/or 2) must be made solely by you. If there are any doubts about the time of publication, possible collaboration etc., a participant will have to prove his/her complete innocence by presenting compelling and satisfactory evidence.
Currently, the only reliable proof is the presence of code on the Internet and the presence of the used edition in the cache of well-known search engines.
For example, this rule accepts the use of the code from the website http://e-maxx.ru/ if the code was written and published/distributed before the start of the round. With the help of search engine caches, it can be easily shown that such code doesn't violate the rules. Similarly, it is permissible to use the code from a book/article that was published before the contest. On the other hand, using team reference code (for example, prepared for ACM-ICPC World Finals) is not allowed if there is no reliable and objective way to prove that the code was written before the contest.
This rule doesn't loosen the rules about prohibiting of communication, discussion, or any other form of communication between the contestants on any topics about the problems during the round.
16. Solution code obfuscation and creation of obstacles to reading and understanding the solution is prohibited. It is forbidden to use any special techniques designed to complicate the reading of the code, to understand its workflow.
17. After two hours of entertainment contest ends. For each participant we choose the latter solution for each problem (of course, only successful). All such solutions are rejudged on the final set of tests. As a result, some solutions fail. The final result for the competition is the sum of scores for all the solutions that have passed final testing, plus the scores that you have received (or, conversely, lost) while hacking.
All, finita la comedia, that is, game over.
Waiting for your opinions,
P.S. I avoid term "challenge" deliberately. It can't be translated into Russian well, also Topcoder may have ambitions for the exclusive "Challenge phase", etc. I ask you to use term "hack" in discussions and comments. Thank you for your understanding.