Welcome to the official evaluation server of the South African Programming Olympiad! This server is used for running the second and third rounds of the South African Programming Olympiad. You can also practise past papers (including first rounds) and find a variety of other training material here.
For more general information about the programming olympiad, you should visit the official website.
Current and future contests are hosted on the Contest Server, as well as a selection of past contests intended for preparation purposes.
For further help regarding the usage of the Contest Server, you can consult our documentation manual or watch the tutorial video below.
Here you can browse old SAPO problems. Many recent contests can instead be found on the Contest Server.
If you spot a mistake in a task, please send an email to admin@saco-evaluator.org.za.
For more specific help with SACO Final questions, you can also take a look at these SACO Editorials written by Andi Qu (2019 & 2020 Gold Medallist).
More recent first and second round question papers and solutions can be found here.
Download all the Round 2 papers up to 2010: R2.tar.gz [3.3Mb]
Year | START | OPEN | Solutions |
---|---|---|---|
1999 | - | [PDF] | - |
2000 | - | [PDF] | [Solutions] |
2001 | - | [PDF] | [Solutions] |
2002 | - | [PDF] | - |
2003 | - | [PDF] | - |
2004 | - | [PDF] | - |
2005 | - | [PDF] | - |
2006 | [PDF] | [PDF] | - |
2007 | - | [PDF] | [Solutions] |
2008 | - | - | [Solutions] |
2009 | - | [PDF] | [Solutions] |
2010 | - | [PDF] | [Solutions] |
Year | Day 1 | Day 2 | Handin system |
---|---|---|---|
1998 | [PDF] [Word] | [PDF] [Word] | No |
1999 | [PDF] [Word] | [PDF] [Word] | No |
2000 | [PDF] [Word] | [PDF] [Word] | No |
2001 | [PDF] [Word] | [PDF] [Word] | No |
2002 | [PDF] [Word] | [PDF] [Word] | No |
2003 | [PDF] [Word] | [PDF] [Word] | No |
2004 | [PDF] | [PDF] [Solutions] | No |
2005 | [PDF] [Solutions] | [PDF] [Solutions] | No |
2006 | [Open] [Future stars] [Solutions] | [Open] [Future stars] [Solutions] | No |
2007 | [Open] [Future stars] [Solutions] | [Open] [Future stars] [Solutions] | No |
[Taunter Pres] [Search Pres] | |||
2008 | [Open] [Future stars] [Solutions] | [Open] [Future stars] [Solutions] | Yes |
2009 | [PDF] [Solutions] | [PDF] [Solutions] | Yes |
2010 | [PDF] [Solutions] | [PDF] [Solutions] | Yes |
2011 | [PDF] [Solutions] | [PDF] [Solutions] | Yes |
2012 | [PDF] | [PDF] | Yes |
2013 | [PDF] | [PDF] | Yes |
2014 | [PDF] | [PDF] | Yes |
2015 | [PDF] | [PDF] | Yes |
2016 | [PDF] [Solutions] | [PDF] [Solutions] | Yes |
2017 | [PDF] | [PDF] | Yes |
2018 | [PDF] | [PDF] | Yes |
Every year, 4 finalists from the South African Computer Olympiad are selected to represent South Africa at the International Olympiad in Informatics.
Year | Event | Day 1 | Day 2 | Handin |
---|---|---|---|---|
2002 | 1st camp | [PDF] [Word] | [PDF] [Word] | Yes |
2nd camp | [PDF] [Word] | [PDF] [Word] | Yes | |
3rd camp | [PDF] [Word] | - | Yes | |
Web training | See handin | See handin | Yes | |
2003 | 1st camp | [PDF] [Word] | [PDF] [Word] | Yes |
2nd camp | [PDF] [Word] | [PDF] [Word] | Yes | |
3rd camp | [PDF] [Word] | - | Yes | |
Web training | See handin | See handin | Yes | |
2004 | 1st camp | [PDF] [Word] | [PDF] [Word] | Yes |
2nd camp | [PDF] [Word] | [PDF] [Word] | Yes | |
3rd camp | [PDF] | [PDF] | Yes | |
Web training | See handin | See handin | Yes | |
2005 | 1st camp | [PDF] | [PDF] | Yes |
2nd camp | [PDF] | [PDF] | Yes | |
3rd camp | [PDF] | [PDF] | Yes | |
Web training | See handin | See handin | Yes | |
2006 | 1st camp | [PDF] | [PDF] | Yes |
2nd camp | [PDF] | [PDF] | Yes | |
3rd camp | [PDF] | [PDF] | Yes | |
2007 | 1st camp | [PDF] | [PDF] | Yes |
2nd camp | [PDF] | [PDF] | Yes | |
3rd camp | [PDF] | [PDF] | Yes | |
2008 | Online camp | [PDF] [Solutions] | Yes | |
1st camp | [PDF] | [PDF] | Yes | |
2nd camp | [PDF] | [PDF] | Yes | |
3rd camp | [PDF] | [PDF] | Yes | |
Web training | See handin | See handin | Yes | |
2009 | 1st camp | [PDF] [Solutions] | [PDF] [Solutions] | Yes |
2nd camp | [PDF] | [PDF] | Yes | |
3rd camp | [PDF] | [PDF] | Yes | |
Web training | [PDF] [Solutions] | [PDF] [Solutions] | Yes | |
2010 | 1st camp | [PDF] | Yes | |
3rd camp | [PDF] | [PDF] | Yes | |
2011 | 1st camp | [PDF] | Yes | |
3rd camp | [PDF] | Yes | ||
2012 | 1st camp | [PDF] | Yes | |
2nd camp | [PDF] | Yes | ||
3rd camp | [PDF] | [PDF] | Yes |
The first round of SAPO is open for one week in July or August. The contest lasts for 1 hour and consists of three questions, each containing usually four to six test cases of varying complexity. The questions will ask you to write and debug a program that solves a given task.
This round tests the basic fundamentals of programming. For example, if you're familiar with if-statements, for loops, while loops and basic arrays/lists, then the first round should not be much trouble.
The second round is open on a given day, usually within three weeks of Round 1. The contest itself is 2 hours long and consists of three to five questions of a more challenge nature than that of the previous round. Each question may consist of different subtasks of increasing difficulty. The aim of this round is similar to the previous round (write code to solve a problem), however this time you will be required to submit your code on our online evaluator. It therefore must produce the exact correct output for every test case in order to score full marks.
This round goes beyond programming basics and tests elementary algorithms and data structures. The sections below outline how to prepare for the second round from learning to program to mastering the more challenging questions.
If you have no experience with programming then Python is a great language to start with. If you have learned Java, Pascal or Delphi at school, or any other language for that matter, you might also be interested in learning Python as a new programming language.
The free ebook A Byte of Python is targeted at beginner programmers (i.e. if you have little or no knowledge of programming). You can read it online or download a PDF. It covers downloading and installing Python so those instructions won't be repeated here.
Dive Into Python is another free ebook, but targeted at experienced programmers looking for a rapid jump into Python. It is useful if you are already thoroughly understand another programming language. You can read it online as a PDF here.
The Computer Olympiad website has a collection of past first and second round papers dating back to 2009 here. Some solutions are available here. Solving these problems as practice will prepare you well for the second round. You should also time yourself, remembering that the paper is two hours long.
For those who complete all the past second round papers and want more challenging problems to practice on, there are plenty of such resources! One place you can go is the USACO Training Program, which allows you to progress from easy to very challenging problems as well as testing your code against secret test data. This is an excellent resource and has several problems with a wide range of difficulty. A more modern resource is USACO Guide, which has many explanations of algorithms and data structures as well as example problems and their solutions.
In the second round, the last problem (as well as sometimes the one before it) almost always tests algorithms and/or data structures. The USACO Training Program and USACO Guide mentioned above have many great articles. Another useful collection of articles on data structures and algorithms is by Bruce Merry, the most successful SAPO contestant to date, available here.
There are many aspects of contest programming that differ from everyday programming. You do not need to check that the input matches the constraints -- these are only there to give you a guarantee on the input.
Time is everything. You only have two hours to solve four problems in Round 2. If you think the problems are easy, try timing yourself while doing one of the past papers. This is where Python becomes useful, as the code is almost always less than half the length of Java, C++ or Pascal code. You do not need to go for the most complex solution, just one that solves the problem for the provided test cases in a reasonable amount of time and memory. The last problem (and sometimes also the one before it) will require a clever solution, even if a brute force solution could work on smaller data.
It's not enough to check that your program works only on the example inputs given in the task statement. Also test larger test cases (up to the highest values the input can be) as well as corner cases (which might not get tested if one only generates random test data).
The best way to learn is to ask questions. For questions regarding administration and general matters, send an e-mail to info@olympiad.org.za. For training matters, please approach your IT teacher, or on of the many forums that deal with algorithms or specific languages.
The top ~15 contestants from the second round are invited to participate in the final round of the SAPO. This is a lot tougher than the second round, making preparation vital.
There is a large collection of past final round and even more challenging training camp problems available here. There is an online evaluation system for the problems going back to 2002 available here, where you can submit solutions for evaluation. The evaluation system is the same as you will use for the final round, so it would be a good idea to become familiar with it beforehand.
Continue churning through the USACO Training Program and USACO Guide mentioned above. As you progress you will find that the problems quickly reach very challenging levels.
Algorithms and data structures become far more important in the final round. With a decent understanding of dynamic programming and graph theory you will do well.
Competitive programming has becoming very popular in recent years and there are now many programming contests. USACO hosts a number of contests, although none are between our first and final rounds. Codeforces is another great platform which hosts a 2-3h contest every few days.
If you perform well enough at the final round then you will be invited to the training camps. This forms the basis of team selection for the IOI and if you make it this far, preparation will become much more intense.
Every year, 2-6 camps are held to train the team members for the International Olympiad in Informatics. Part of these camps involves presentations on useful topics, mostly by the students themselves.
Topics are covered several times over the years. The best presentations for the most notable topics have been selected.
If you are having trouble loading the PDF presentations in your browser, try downloading them offline by right-clicking the link, and then clicking "Save Link As".
All presentations.