On the first day, you get two programming tasks and one new kind of task (see below). On the second day, you get three programming tasks.
Print diskettes (see below) and blank writing paper will be available. You may bring pens, pencils, and erasers. You may NOT bring any other aids of your own, such as program disks, calculators, manuals, or books.
The subtasks test your ability to read and understand this language, to understand the problem it is used for, to solve the problem, and to write in this language. Your answers do not involve natural language. You may have to fill in some tables, answer some multiple-choice questions, write some small program fragments, etc.
This may sound rather vague, but the rest must remain a surprise.
We emphasize that the programming tasks can all be solved in `standard' Pascal, C++, and Basic. No special features of the programming packages are needed, except possibly for elementary input-output (examples are given separately: batch program and reactive program) and 32-bit integers (see below).
In particular, the following features will NOT play a role in the programming tasks: graphical output, mouse input, advanced string and file manipulation, advanced numeric processing, DOS calls, libraries, objects, overlays, etc. We will keep i/o simple, allowing you to concentrate on the algorithmic details.
You should be familiar with the programming package(s) of your choice. The ability to use the Integrated Development Environment (IDE), in particular the built-in editor and compiler (and, possibly, also the debugger), may be helpful. Some knowledge of compiler options may also be of an advantage. Furthermore, you should be able to use MS-DOS for such things as executing a program, changing the working directory, copying files onto diskette, etc.
Batch programs should read their input data from ASCII text files.
This is the case even if the program will need a single value.
The names of the input files are given in the task description,
for example, `INPUT.TXT'.
Batch programs must not read from the keyboard.
You may always assume that the input data agrees with the task description.
You do not have to validate the input data in your program.
When we speak of `a line of data',
this includes a terminating end-of-line.
The structure of the input is always such that you do not have to
worry about end-of-file conditions.
Input data consists of a sequence of items.
An item is either an integer or a non-empty character string consisting of
letters (`a' to `z' and `A' to `Z')
and/or digits (`0' to `9').
Items are separated by either a single space character or a single end-of-line.
A string is always on a line by itself.
Example input files are provided for all tasks,
both in the task description and the task directory.
The example file for INPUT.TXT is called INPUT-0.TXT, etc.
Batch programs should write their output data to the ASCII text file
named `OUTPUT.TXT'.
Batch programs must not write to the screen.
Like input data, output data also consists of a sequence of items
separated by spaces or end-of-lines
(we prefer one, but you may write more than one if you cannot avoid that).
The output should be formatted exactly as shown in the task description.
Never add output of your own.
Judging of a program involves several `test runs' with secret input data.
A test run for a batch program consists of the following steps:
Efficiency plays an important role in some tasks.
Whenever efficiency is important,
we will also include at least one test run
where the input is such that a correct but inefficient program
can also score some points.
Therefore, it pays to work on a task even if you do not see
how to make the `best' program.
Do NOT put the keyboard on your desk or open the envelope
until the start signal is given.
The envelope contains a one-page task overview and
descriptions for three task.
You also find a condensed version of these competition rules on your desk.
The task overview tells about
names of directories, programs, and input/output files;
points; time limits; etc.
For each task you get two descriptions: one in English,
the other translated into your native language by your team leader.
All relevant figures and examples in the English original are numbered.
The translated versions should refer to these figures by their number;
captions may be translated.
You can submit questions on a special form
in English or in your native language.
In the latter case,
the question will be translated into English by your team leader.
The Scientific Committee will answer every question,
but this may take a while, so keep on working.
At all times, you can ask the room supervisors for assistance,
as long as it does not concern the competition tasks,
for example, when your computer breaks down.
Program POC (Program and Output Checker)
searches and executes each of your solution programs
with the example input and checks the output.
This way you can verify whether you have put your programs by the right name
in the right directory and that they produce output in an acceptable format.
`POC /?' shows usage instructions (in English).
Do NOT switch off your computer.
The organization will make a backup of your work.
You must leave the print diskette in the room,
but you may take the task overview and task descriptions.
On the first competition day, judging of the new task
will start directly after the competition in a separate room.
You are informed of the result afterwards.
32-bit integers
A 32-bit integer variable v is introduced by
var v: longint; { in Turbo Pascal }
long int v; // in Turbo C++
DIM v AS LONG ' in QuickBasic
Input data
Reactive programs should read their input data from standard input,
normally connected to the keyboard.
Output data
Reactive programs should write their output data to standard output,
normally connected to the screen.
Subtasks
Some programming tasks are divided into subtasks.
Points are awarded per subtask and added.
Each subtask involves a part of the output data.
If you do not know how to solve a subtask,
then your program should still write appropriate output for that subtask
(make a guess).
The judging software cannot properly evaluate incomplete output.
Programs, test data, and time limits
For each task there is a task directory
whose name is given in the task overview.
If TTT is the name of the task directory,
then you should produce a stand-alone executable file named
TTT.EXE in that directory.
For each task,
the task overview gives an execution time limit
that applies to every test run.
The points collected for each test run are added to give your final score
for that task.
Starting the Competition
When you enter the competition room,
your computer will already have been switched on.
The keyboard is on top of the monitor and
the competition tasks are inside an envelope underneath the keyboard.
Questions
During the first hour of the competition (11:00--12:00) you may
ask questions concerning (alleged) obscurities in the competition tasks.
These questions will be answered with `Yes', `No', or
`No Comment' only.
Printing
During the competition you can get printouts of ASCII text files.
Copy the file(s) to be printed into the root directory `A:\'
of your print diskette and hand it over to an official.
The print diskette is returned with the printout.
The printed files are moved to a subdirectory `A:\TRASH-??'.
Auxiliary Programs
For your convenience, there are two auxiliary programs.
Program TIM (Timing and Input/output Monitor) executes a program
and reports the run time.
Optionally, it copies and shows input and output files.
`TIM /?' shows usage instructions (in English).
Ending the Competition
You will be warned both 15 and 5 minutes before the end of the competition.
Go through the following check list for the programming tasks:
At the end signal you must immediately stop working.
Put your keyboard on top of the monitor and, on the first day only,
put the answer forms in the envelope.
Judging
Judging of the programming tasks starts one hour after the competition.
There will be a schedule giving approximate judging times.
An evaluator invites you and your team leader to return
to your competition computer and to observe the judging procedure.
The evaluator uses special judging software to test you programs.
Afterwards you receive a diskette with your work, the test data, and your
results.
Eindhoven, June 12, 1995
Scientific Committee for IOI'95
IOI 95