Why is the AIO being held?

The AIO is an opportunity for students across Australia to demonstrate advanced problem-solving and computer programming skills. They will use problem-solving skills and algorithmic thinking to come up with strategies for solving problems, and programming skills to turn these strategies into code.

The questions cover a range of difficulty, challenging students of all skill levels. The leading students will be given an opportunity to be selected for the Australian team for the International Olympiad in Informatics (IOI). This has been held since 1989 and is the second largest of the scientific Olympiads, with about 80 countries participating.

When is the AIO held?

The AIO is on 22 August 2019. The start time of the competition is up to each school, and students may begin the competition between 9am and 5pm Australian Eastern Standard Time (7am to 3pm in WA).

How long is the AIO? How many problems will there be?

The AIO is a three-hour exam, consisting of six problems of varying difficulty.

Who can compete in the AIO?

The AIO is open to all Australian high school students. The Intermediate Division is open to students up to year 10. The Senior Division is open to students up to year 12.

Schools outside Australia are also invited to participate in the AIO! Contact for more information.

What languages can students use for the AIO?

Students may submit solutions to problems in C, C++, C#, Java, Pascal, PHP, Python 2 or Python 3.

Are students required to use the same language to solve all problems?


Does our school need internet access for the AIO?

Yes, students will need internet access to submit their solutions to the contest system and receive feedback for their submissions. During the contest, students should only use the internet to access the contest system (and not to look up programming resources, look up answers, nor communicate with other students, etc).

What resources may students access during the AIO?

The AIO is run as an open book exam. Students may bring whatever printed/written notes, textbooks, or other non-electronic resources they wish.

Students will also be provided (via the contest system) with solution templates. These are pre-written programs, available in each of the supported languages, which already perform the necessary file input and output for the student. Students may optionally use these templates as a basis for coding their own solutions to the problems.

What resources may students not access during the AIO?

Students may not access any electronic source code. In particular, they are not to copy and paste existing code during the competition, with the exception of the provided solution templates.

Students are not allowed to use the internet for any purpose besides accessing the contest system. (For example, they may not go online to look up programming resources, look up answers, or communicate with other students.)

How can students prepare for the AIO?

Students are encouraged to sign up to the AIOC Training Site at There they will be able to submit code and have it automatically marked. All AIO languages except for C# and Python 3 are currently supported.

We recommend students who are not already able to program in one of the AIO languages learn Python. The NCSS Challenge teaches students Python in weekly segments for a month for students of all abilities.

How is the AIO marked?

Students submit their source code (not executables), which is compiled on an official judging machine. Then the student’s program is tested against different input files (‘test cases’). For each test case, we run the program and check its output against the expected official answer.

Students will be able to see the marks for each of their submissions during the contest. 

What criteria are marks awarded for?

Students are only marked on the correctness and speed of their programs. Coding style (good variable names, indentation, etc.) is not taken into consideration. Of course, students may find that good coding style makes it easier for them to debug their programs.

Marks are awarded automatically by our judging machines during the competition.

How is my score calculated?

Each problem contains a number of subtasks worth a total of 100 marks. These subtasks will be described in the question.

For each subtask, we will run your code against a collection of test cases. If your program correctly solves all of these (and runs within the time limit for each case), then you will score all the points for that subtask. Otherwise, we will tell you why your program failed—for example, because it was too slow, or because it gave the wrong answer to a test case.

Example: Imagine a problem that asks you to take two lowercase words, each up to 30 letters long, and decide if they are anagrams of each other. Then the problem might include a description of the subtasks that looks like this:

  • For Subtask 1 (25 marks), each word will be 5 letters long and won’t contain any letter more than once.
  • For Subtask 2 (15 marks), each word will be 5 letters long.
  • For Subtask 3 (20 marks), each word won’t contain any letter more than once.
  • For Subtask 4 (40 marks), no further constraints apply.

As you can see, the easier subtasks put more restrictions on the input, letting you make simplifying assumptions about the problem.

  • If you coded a program which worked correctly for all words up to 15 letters long, you could expect to solve Subtasks 1 and 2. This would result in 25 + 15 = 40 marks.
  • If you coded a program which worked correctly for words up to 30 letters long that don’t contain any letter more than once, you could expect to solve Subtasks 1 and 3. This would result in 25 + 20 = 45 marks.

We take your best score for each subtask among all your submissionsThus, if you submitted both the programs above, you would earn 25 + 15 + 20 = 60 marks, despite never having submitted a solution scoring 60 marks.

When you submit your code, you will be able to see your submission’s score a few minutes later.

How can I receive feedback during the competition?

When you submit your code, you will be able to see your submission’s score a few minutes later. By clicking the “View details” button, you will be able to see a breakdown of how your code performed on each subtask. For the subtasks your code didn’t solve, you will be able to see a reason why it did not pass a particular test case in that subtask. If your code fails on several test cases, a reason is only displayed for the first.

Will students receive any hand-marked feedback?

Unfortunately, as of 2019, we are no longer able to provide any hand-marked feedback on students’ code.

According to the rules, my program must read input and write answers to text files. How do I do this in my language?

You will be provided (via the contest system) with solution templates. These are prewritten programs, available in each of the supported languages, which already perform the necessary file input and output for each question.

If you wish, you may use these templates as a starting point for your own solution. However, this is not compulsory.

How many times can I submit?

You may submit code as many times as you like but must wait at least one minute between submissions. Only your highest score for each problem will be counted at the end of the competition.

How long are my programs allowed to run for?

Each problem has a per test case time limit. For example, if the time limit is 1 second, then your program must take 1 second or less for each test case. The time limit for a question may vary depending on the language you are using. You will be able to find the time limit for your language in the problem statement.

What do I do if my program is too slow?

The subtasks are designed to reward programs that can scale to larger inputs. Often a cleverer algorithm is required to score more marks.

What do I do if my program gets incorrect answers?

This shows that there is a bug or a mistaken assumption in your solution. Test your code against a variety of your own input files to see if you can spot the mistake.

If your program gets an incorrect answer for any of the test cases in a subtask, it will not score any points for that subtask. It is important to make sure that your program is correct for all cases.

What’s better, a fast program or an accurate program?

An accurate program: it is better to write a slow but correct solution than a fast but incorrect one.

A slow solution will usually solve at least one subtask for partial marks, whereas an incorrect or buggy solution is likely to score zero.

My program got a ‘Wrong answer’ or ‘Timed out’ result for a subtask. Can I see the input case it failed on?

No, the test cases are kept secret.

Will there be certificates?

Yes, as with all Australian Mathematics Trust events, students who submit a solution to at least one problem will receive a certificate (either for Participation, or at Bronze, Silver or Gold level) to acknowledge their work.

What is the AIOC School of Excellence?

The School of Excellence is an intense 10-day training school in December held for Australian students up to year 11 with exceptional AIO results. The school covers advanced topics in informatics, including material on algorithms that is usually taught in second or third year university.

After further exams and training, four of the students invited to the school will later be selected for the national team for the International Olympiad in Informatics.