About the Australian Informatics Olympiad
Q: Why is the AIO being held?
Answer: 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 devise 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 alike. 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 biggest of the scientific Olympiads, with about 80 countries participating.
Q: Who can compete in the AIO?
Answer: 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 firstname.lastname@example.org for more information.
Q: Does our school need internet access for the AIO?
Answer: Yes, students will require 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).
Q: 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 nonelectronic resources they wish.
Additionally, students 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 the student. Students may optionally use these templates as a basis for coding their own solutions to the problems.
Q: What resources may students not access during the AIO?
Answer: 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.)
Q: How can students prepare for the AIO?
Answer: Students are encouraged to sign up to the AIOC Training Site at ausinformatics.com. 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 to learn Python. The NCSS Challenge teaches students Python in weekly segments for a month for students of all abilities.
Q: How is the AIO marked?
Answer: Students submit their source code (not executables), which is compiled on an official judging machine. Then the student’s program is tested against a number of 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.
Q: What criteria are marks awarded for?
Answer: 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.
Q: How is my score calculated?
Answer: 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: Consider 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 (35 marks), each word will be 5 letters long.
- For Subtask 3 (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 words up to 15 letters long, you could expect to solve the first two subtasks but not the third. This would result in 25 + 35 = 60 marks.
When you submit, you will be able to see your submission’s score a few minutes later.
Q: According to the rules, my program must read input and write answers to text files. How do I do this in my language?
Answer: 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.
Q: How long are my programs allowed to run for?
Answer: 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.
Q: What do I do if my program gets incorrect answers?
Answer: This indicates that there is a bug or a mistaken assumption in your solution. Test your solution 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.
Q: What’s better, a fast program or an accurate program?
Answer: 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.
Q: What is the AIOC School of Excellence?
Answer: 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.