Competition Rules


Irish Schools Programming Competition How to enter Time Table DCU Computers Guidelines Sample Problems Previous Competitions IOI


Note that these are based on the rules of the IOI.

1. The contest organiser will have final say in the interpretation of these rules and in the ruling of any unforeseen eventualities.

2. Contestants must be in second-level education and be under 20 at the time of the international competition. (The age limit is subject to revision.)

3. The contest will consist of two five hour sessions. There will be three problems in each session.

4. The computers used will be standard PCs, the languages will be BASIC (QBASIC), Pascal (Turbo Pascal) and C (Borland C++). Contestants must use the computers and languages provided. They may not bring their own hardware (no calculators) or software.

5. Contestants may bring any books, manuals and/or notebooks into the competition.

6. Contestants must not disturb other contestants.

7. Contestants may ask questions in the first hour of a session. Questions must be written on a sheet of paper, and the answer will be yes, no or no comment. (Not very informative, but those are the IOI rules.)

8. At the end of a session, the programs should be saved as directed below (see the section on filenames). In addition, the programs will be copied onto two floppy disks (these will be supplied). Contestants will keep one disk and the other will be handed up to a supervisor.

Marking

1. A computer program will mark the programs automatically.

2. All programs will read their input from a file and will write the output to a file. They will be marked solely on the output. In no case will the program itself be looked at. The names of the files will be specified on the problem itself. You must ensure that you follow these instructions.

The Programs

Your program will be marked only on the output file. You may produce any screen output, but this will not be marked. It should be possible to compile and run your program automatically. Your program must not wait for keyboard input.

Notes

Compiled programs (Borland C++, and Turbo Pascal)

Programs must compile using the normal command line, i.e., it should not require any special command line options to work.

QBASIC programs

These programs will be run by using the QBASIC /run command. For example, the first problem will be run using the command

QBASIC /run day1a.bas

This will run the program. The program should create the file day1a.sol which contains the solution. The program should then exit. This means that BASIC programs should finish by issuing a SYSTEM command. Otherwise it will not be possible to process them automatically.

Filenames

There will be three problems on the first day. When you are ready, you should save the first program as \DAY1A.BAS if it is a BASIC file, \DAY1A.PAS, if it is a Pascal program, and \DAY1A.C, if it is a C program. The program should read its input from a file called DAY1A.DAT, and write its output to a file DAY1A.SOL.

The same rules apply to the other problems on day1 except that the filenames will start with DAY1B and DAY1C.

On the second day, the filenames will start with DAY2. That is if you write a BASIC program to solve problem A, then it should be called \DAY2A.BAS, and read its input from a file called DAY2A.DAT. It should create a file called DAY2A.SOL.

Execution Time

Execution time will not be considered, except

a) Where the program does not finish in reasonable time. This will be of the order of 20 seconds. In this case the program will be considered not to work.

b) In the event of a tie, and only if a result is needed, the fastest program to execute will be considered better.

Comments on the marking process : When I saw these rules in action, I thought they were very hard on the contestants. But even with these rules the marking process was very long and arduous. Besides, it is impossible for two people to agree on the merits of a program just by looking at it. However, you will get a sample input file. You can run your program using this and check to see if it gives the correct output (which you will also be given).