The IOI'2004 Competition Rules

Tasks | Competition Procedures | Grading | Code of Conduct

These Competition Rules cover Competition Procedures and Judging Procedures. Additions and changes to these rules will likely be made; intermediate versions will be distributed electronically as they are available, and the final version will be distributed in the first GA meeting of IOI 2004. Notable changes from previous years include a procedure for submitting allowed items to be provided to contestants during competition rounds and the possible inclusion of small amounts of clarifying text in answers to contestants' questions.

Delegation Leaders have the responsibility of ensuring that all members of their delegation fully understand these rules and abide by them. Anyone is welcome to translate these rules into other languages to help understanding, but this English version is the official rule set.


All of the tasks in IOI 2004 are designed to be algorithmic in nature. Efficiency plays an important role in some tasks; whenever efficiency of algorithmic computations is important, there will be grading inputs for which some correct but inefficient approaches can also score some points. It is important, therefore, for contestants to attempt a task even if the contestant does not know how to solve the hardest possible test cases.

There are two types of task solutions: (1) solutions comprising a single source file of a computer program, and (2) solutions comprising a set of "output" data files.

1. Solutions consisting of a program source file:

When a program source file is required as a solution, the source code provided by the contestant must be contained in a single source file. The task statement will specify:

The submitted source program must be smaller than 1 MB and the evaluation server computer must be able to compile it in less than 30 seconds. Submitted programs which do not meet these constraints will be rejected by the submission system and the contestant will be notified.

2. Solutions consisting of output data files:

The competition might include tasks for which input data is given to the contestant and the contestant is required to produce only the output data as a solution. If the contestant writes programs to help determine the output data, the programs should not be submitted with the solution. The input data will be provided in ASCII text files. For these tasks, the task statement will specify:

Input and output data

In all tasks, input and output data consist of one or more lines, each ending with an end-of-line character. No end-of-line character conversion is necessary, as input data provided in each operating system environment will have appropriate end-of-line characters for that operating system, and output files will be accepted with either end-of-line convention. Each line contains one or more space-separated items. An item is a string of printable non-white-space characters (ASCII code from 33 through 126). An item may represent an integer or a general string; the meaning of each item will be given in the task description.

The format for input and output data will be specified in the task description. The output data files should be formatted strictly according to the task-specific instructions.

Competition Procedures

Competition Schedule

IOI 2004 begins on Saturday, September 11 (Arrival Day) and ends on Saturday, September 18 (Departure Day). The First Competition Day is Monday, September 13, and the Second Competition Day is Wednesday, September 15. On each competition day contestants will be given three tasks to complete in the five hours from 9:00 to 14:00.

There will also be a two hour Practice Competition round the morning of Sunday, September 12 from 16:00 to 18:00. The purpose of this practice round is to familiarize all participants with the environment and procedures. The practice tasks will be distributed in advance of the IOI and contestants are encouraged to bring prepared solutions with them on floppies for submission during the practice round. All contestants are required to take part in the Practice Competition round.


In order to protect the confidentiality of the tasks, all contact and communication between contestants and team leaders is prohibited between the start of a GA Meeting where tasks for a competition day are presented (13:00) and the end of the five-hour round on the following day (14:00). During this period the contestants are not allowed to communicate by any means, direct or indirect, with anyone who attended the GA Meeting; and the GA Meeting participants are not allowed to communicate task-related information to anyone not at the Meeting. The contestants and the GA Meeting participants must obey any instructions which restrict their access to specific parts of the campus.

If a contestant violates the quarantine, they will be disqualified. If some other person associated with a national delegation violates the quarantine, then all contestants of that delegation will be disqualified.

Competition Equipment and Environment

The specifications of the competition computers are not yet known, and will be made public as soon as they are available. However all contest machines will be installed to dual-boot to Windows XP Pro and Red Hat 9.0 Linux. Versions of gcc / g++ , fpc , gdb and rhide will be installed in both environments; the Free Pascal IDE will be available in at least Windows, and emacs , vim , joe , and ddd will be available in Linux.

For team leaders to translate tasks, computers with a version of Microsoft Word with some multilanguage support will be provided. In addition, some Ethernet ports and 802.11b access will be available for leaders bringing laptops.

Competition Supplies

In the competition room, blank paper and writing utensils will be provided. On the competition days, contestants may not bring anything into the competition rooms with them as they enter; any attempt to bring any item other than clothing, reasonable jewelry, and simple wristwatches into the competition room will be considered cheating. However, certain items may be submitted in advance to be given to a contestant during the competition rounds. These items are:

At the end of the Practice Competition round, a Delegation Leader may submit any of these items on behalf of a contestant after examining the items and vouching that no cheating is involved. Contestants should set up the items at their computers during the Practice Competition round; the items will be screened and rejected items will be set aside and returned later. During Competition Round 1, contestants may use any of the items remaining at their computer. When Competition Round 1 ends, contestants will be given bags which they should label with their contestant ID and into which they must place all items they wish to be provided to them during Round 2 (with the exception that they may optionally leave their keyboard and mouse out of the bag and attached to the computer for use during appeals). Contestants must submit the bag and its contents to the room monitor before leaving the competition room at the end of Round 1. The bags will be placed at the contestants' computers before Round 2 begins.

Note that the allowed items will only be collected for both rounds at the end of the Practice Competition; any item which a contestant wishes to have during either round should be submitted at the end of the Practice Competition, and any item a contestant wishes to have during Round 2 should be bagged and resubmitted at the end of Round 1.

All items not mentioned above are prohibited and submissions of those items will be rejected, including but not limited to

Possession of any prohibited items during a competition will be considered cheating and will be cause for immediate disqualification.

Any electronic or printed materials provided by the competition organizers during the Competition Round may be used by the contestants (e.g., a Users Guide to the submission system, or any electronic documentation or reference manuals provided in the installed competition environment or on the provided Competition Server).

Starting the Competition:

On competition days immediately after breakfast ends at 8:00, contestants will be admitted to the competition rooms. All contestants must wear their ID badges to the competition. Each contestant will have a pre-assigned room and computer within that room; this information will be posted the morning of the competition. Contestants should be in their seats by 8:25 (5 minutes before the start of the competition). On the way to their computers, contestants will be checked to verify that they are not bringing anything with them into the competition rooms other than clothing, reasonable jewelry, and simple wristwatches. Contestants must find their assigned computer, sit down, and wait for the competition to begin without disturbing any:

The beginning of the competition will be marked by a start signal, after which time the contestant may use any of the above items.

Task Questions:

During the first hour of competition, contestants may submit written questions concerning any ambiguities or items needing clarification in the competition tasks. Questions must be submitted on the provided Clarification Request Forms, expressed either in the contestant's native language or in English. If required, delegation leaders will translate their contestants' questions to English after they are submitted and before they are sent to the Scientific Committee.

The Scientific Committee will respond to every question submitted by the contestants. Since this might take some time, contestants should continue working while waiting for the answer to their questions. Most questions will be answered with one of "YES", "NO", or "NO COMMENT"; contestants should phrase their questions so that a yes/no answer will be meaningful. Contestants will not be involved in or exposed to discussion regarding their questions. However, in cases where the Scientific Committee feels that the contestant does not understand the task statement, English text which helps clarify the task may be added to the response, and if necessary, translated by the contestant's Delegation Leader into the language in which the question was originally posed.

Competition Server

The competition computers will have network access to a Competition Server, a web server which provides documentation, needed task data, and facilities such as printing, backups, test execution, and solution submission.

PRINTING: After a contestant requests that a document be printed, the support staff will deliver the printout to the contestant; contestants should not leave their computer to find printouts. Printouts will be delivered as quickly as possible, but large volumes can produce delays in delivery.

TEST EXECUTION:For tasks that require programs as solutions and files as output, a contestant will be able to submit a solution along with an input file for test execution. The test execution system will compile and execute the program under Linux, enforcing the resource limitations for the particular task. The first 100kB of screen (including error stream) output, the contents of the output file, execution time, and any applicable error messages will be displayed. A contestant can have at most one test execution in progress at a time; until a test execution has completed, further submissions will be blocked.

SOLUTION SUBMISSION:Contestants submit solutions to the Competition Server via a web browser. For tasks which require output files as solutions, the submission facility will validate the format of each output file submitted, accepting the output file for grading if it passes. For tasks that require programs as solutions, the submission facility will accept C/C++ or Pascal programs, verify that the program compiles and obeys the stated limits on source code size and compile time, and will run the program on a small number of simple test cases including at least one given in the task description, enforcing the relevant run-time resource constraints. If the submission produces the correct output, then the submission is accepted for grading; note that acceptance only means that the compilation was successful (no compile errors) and the program correctly solved the simple test cases within the resource constraints, but no more. In particular, it does not mean that the program would obey the resource constraints when given different input.

Contestants may submit any number of times for each task; each accepted submission replaces all prior submissions of that task by that contestant. The last accepted submission by a contestant for a task is officially graded in a separate process and contestants will not be informed about the results until after the competition. Contestants are advised to submit tasks as they are ready and not to wait until the last minutes of a competition round to submit.


Contestants may ask the support staff for assistance at any time. The staff members will not answer questions about the competition tasks, but will deliver Clarification Request Forms and printouts, help locate toilets and refreshments, and assist with computer and network problems. The only manner in which contestants are allowed to access the network is via web browser access to the designated Competition Server; even running a single 'ping' command is strictly prohibited. Contestants should never attempt to "fix" or "debug" or even "check" computer or network problems themselves; they should instead ask for assistance with any such issues.

Ending a competition round:

Three warnings of the end of a round will be given with 15 minutes, 5 minutes, and 1 minute remaining by announcing the warnings verbally and writing the time remaining on a chalkboard. The end of the round will be announced verbally and signaled with a whistle. At the announcement ending the round, contestants must immediately stop working and wait at their desks without operating the computers or touching anything on their desks; an additional announcement will be made instructing them to leave their tables and exit the competition hall.

At the end of the first Competition Round, any previously submitted items a contestant would like to use during the second Competition Round should be put back into the bag and resubmitted to competition staff. All other items should be taken out of the competition room, including the task statements; nothing of value should be left in the competition room without placing it in the bag and resubmitting it. At the end of the second Competition Round, contestants should remove all items including their bag from the competition room; nothing should be left behind.


For tasks that require programs as solutions, the submitted source files will be re-compiled under Linux, enforcing the source file size and compilation time constraints. The grading system will then execute the compiled program under Linux, enforcing the task-specific run-time resource constraints. Typically, there will be a CPU run-time limit, a limit on total memory use, and a 1 MB limit on the number of bytes written to the output file. Every limit applies independently for each test case; if any limit is exceeded, no points will be awarded for that test case. The actual limits will be specified in the task materials. If a program exceeds its allotment of any resource, the program is terminated and the test case is marked incorrect, without regard to any output produced.

Programs submitted must not contain any assembly language code and must not make any system calls other than file/stream reading and writing. Upon termination, programs must always explicitly return an exit value of 0; other exit codes will be interpreted by the grading system as failures. Functions which return the elapsed program time will be provided in all environments; this should be used instead of signals or timers. Programs must be strictly deterministic, that is, multiple runs on the same input must produce the same output; random number generators may be used provided they are explicitly seeded with constants in order to make the results deterministic.

Submitted programs are not allowed to

All of the above actions are considered cheating, and any contestant whose program attempts any of the above will be immediately disqualified.

Only work which has been submitted to and accepted by the grading system will be awarded points. Grading results are scheduled to be available at 17:00 on competition days; printouts summarizing the scoring will be distributed and other information will be made available electronically. Grading appeals are due at 20:30 on the same day. Results of appeals will be made available the following day. In the event that a mistake is discovered in the grading of a task, every successful submission of that task will be re-graded and re-scored whether or not the scoring of that submission has been appealed. Note that re-scoring may result in a higher or lower score for any contestant; should anyone's score change after grading results have been distributed, new results will be printed and distributed to them.

Code of Conduct

Any contestant

will be considered to be cheating and will immediately disqualified from the competition. Also refer to the list above of prohibited program actions which are considered cheating and result in disqualification.

Cheating will be taken very seriously and rules will be strictly enforced. Any contestant who is cheating in any way will be immediately disqualified, at the discretion of the Scientific Committee. It is of the utmost importance that Delegation Leaders speak to their contestants about cheating, instructing and urging all contestants not to cheat, explaining the relevant rules and verifying that all contestants fully understand them.