IOI'98 Competition Rules

The Competition Week

IOI’98 takes place from Saturday, 5th September (arrival day) to Saturday, 12 September (departure day). Monday, 7th September and Wednesday, 9th September are the competition days. On each of these days you will be given three programming tasks to complete in the five hours from 08:00 to 13:00.

Competition Equipment

The competition computers will be PCs, with Pentium II processor running at 266 MHz, 32MB RAM, standard US keyboard, a mouse and a color screen.

Diskettes for backups, blank writing paper, pens, pencils and erasers will be provided. You may NOT take any aids of your own, such as program disks, calculators, manuals or books, into the competition room.

Programming Tools

The following tools will be installed on each computer:

All packages will be fully installed with help files.

Directories and Execution Path

You will find the following directories on the hard drive of your computer:

The execution path %PATH% will be set to give access to all programming tools.


In Troia, you will be able to use computers for practice. The standard competition environment will be provided together with other facilities, such as e-mail. For the competition, computers will be assigned randomly to each contestant.

Competition Tasks

All of the tasks at IOI’98 are programming tasks and are designed to be an algorithmic nature.

For every task, the task overview page gives a task name, a directory name, input and output files, the execution time upper limit and the maximum points awarded for the task.

For each task you will get a description in English. If your native language is different from English, you will also receive a translation to your native language, by your delegation leader. All relevant figures and examples in the English description are numbered. The translated versions refer to the figures by their number, but captions may be translated.

All relevant figures and examples in the English original are binding and official.

Your Programs

While you may choose to write your programs in any of the programming languages Pascal and C++, you must compile your source programs into a stand-alone executable MS-DOS executable.

The programming tasks can all be solved in any of the available programming language. The input and output operations are simple, allowing you to concentrate on the algorithmic details. No special features of the programming packages are required, nor should they be used. In particular, the following features will NOT play a role in the programming tasks and are discouraged:

  • Graphic output, mouse input, advanced file manipulation, advanced numeric processing, DOS calls.
  • You should be familiar with the programming package of your choice, including the use of libraries or units. Your ability to use the Integrated Development Environment (IDE), specially, the built-in editor, compiler and debugger, will be helpful. Some knowledge of compiler options may also be an advantage. Furthermore, you should be able to use MS-DOS for tasks such as executing a program, changing the working directory and managing files.

    External Communication

    The only external communication allowed by your program is reading input files, writing output files and calling external functions in libraries, that are specified in the task description.

    In particular, you are not allowed to write to the serial ports or attempt to change the timer clock. Any attempt to do so will result in disqualification and a score of 0.

    Input Data

    Programs should read their input data from ASCII text files. This is the case even if the program requires only one single value. The names of the input files are given in the task description. The names of the input and output files must be spelt precisely as given; variations will not be accepted. Programs cannot read from the keyboard.

    You may assume that the input data agrees with the task descriptions.

    Input data consist of a sequence of items. An item is either an integer or a non-empty character string of Latin letters ("a" to "z" and "A" to "Z") and/or decimal digits ("0" to "9"). Either a single space character or a single end-of-line separates items.

    Examples of input files are provided for all tasks, both in the task description and in the task directory.

    Output Data

    Programs should write their output data to the ASCII text file specified in the task description. Programs are NOT required to write to the screen and such output will NOT be evaluated. You are encouraged to remove all screen output from your programs before you create the final executable.

    The output should be formatted exactly as shown in the task description. Never add output of your own, as this may disrupt the evaluation process. Every line must be terminated with a RETURN, including the last line.

    Output data consist of a sequence of items. An item is either an integer or a non-empty character string of Latin letters ("a" to "z" and "A" to "Z") and/or decimal digits ("0" to "9"). Either a single space character or a single end-of-line separates items.

    Exit Code

    Your program should terminate "normally", i.e., with an exit of code 0.

    In particular, C/C++ programs should explicitly return 0.

    Starting the Competition

    You will be allocated a Laboratory for the duration of the competition. When you enter the competition room, your allocated computer will already have been switched on. Your competition entry code will appear in large letters on the screen. The competition task descriptions will be inside a folder underneath the keyboard.

    Do not touch the keyboard, do not touch the mouse and do not open the folder until the start signal is given.


    During the first hour of competition (08:00 to 09:00) you may submit written questions concerning any possible obscurities or ambiguities in the competition tasks. Only one of the following replies will answer your questions:
  • "Yes", "No" or "No Comment"
  • You must submit your question(s), in English or in your native language, on the ‘Question Form’ provided. If required, your delegation leader will translate your question(s).

    The Scientific Committee will answer every question submitted by the contestants. This may take some time. Therefore, you should continue working while waiting for the answer to your question(s). You will not be involved in discussion.

    You may ask the lab supervisors for assistance at any time. The supervisors will NOT answer questions about the competition tasks, but will deliver your question forms, help you find toilets, refreshments and attend to computer problems.


    During the competition you will be able to get printouts of ASCII files. Copy the file(s) into the subdirectory "A:\PRINT" of your diskette and hand it to the supervisor. Your diskette will be returned with the printout of the files. The file(s) will be moved to the directory "A:\TRASH", after printing.


    You will be provided with a diskette to backup your files during the competition. You are advised to maintain backups, so that you can recover in the unlikely event of a machine failure.

    Ending the Competition

    You will be warned at 15 and at 5 minutes before the end of the day’s competition. Take this opportunity to go through the following checklist for the tasks:
    1. Have you saved your programs with the correct name in the correct task directory? (No other files or directories will be evaluated)
    2. Have you disabled the debug features in your programs?
    3. Have you removed screen output?
    4. Did you make executables using the right compiler options?
    5. Did your programs produce output in acceptable formats?

    At the END signal, you must immediately stop working. Put your keyboard on top of the monitor.

    Do NOT switch off your computer. The supervisors will make backup of your work.

    You may NOT remove any diskettes from the competition room. You may remove your competition folder.


    Judging starts 1 hours after the competition ends. Your delegation leader will be given a schedule showing when you can expect to have your work evaluated. An evaluator will ask you and your delegation leader, to observe the judging of your work on your competition computer.

    Judging of a program involves several "test runs" with confidential input data and special evaluation software. A test run for a program consists of the following steps:

    1. Your executable program will be copied into a special evaluation directory.
    2. The test data will be copied to the appropriate file.
    3. Your program will be executed in this directory without command-line parameters.
    4. A separate computer will time the execution.
    5. If your program terminates "normally" (with exit code 0) within the time limit, then the output is checked; Otherwise it is aborted and the output will NOT be checked.
    6. The points awarded for each test run are aggregated to give your final score for that task.

    Efficiency plays an important role in some tasks. Whenever efficiency is important, then at least one test run will be included where the input is such that a correct, but nevertheless inefficient, program can also score some points. It is important, therefore, to attempt a task even though you may not know how to achieve the "best" solution.

    On completion of the evaluation your delegation leader will be asked to accept the results or register a request for further review giving a suitable reason. Your delegation leader will receive a copy of the diskette with your work and the test data used, and a printout of your results.