Guide to Competitive Programming

The International Olympiad in Informatics is an annual programming contest for secondary school students. Each country is allowed to send a team of four students to the contest. There are usually about 300 participants from 80 countries.

The IOI consists of two five-hour long contests. In both contests, the participants are asked to solve three difficult programming tasks. The tasks are divided into subtasks, each of which has an assigned score. While the contestants are divided into teams, they compete as individuals.

Participants for the IOI are selected through national contests. Before the IOI, many regional contests are organized, such as the Baltic Olympiad in Informatics (BOI), the Central European Olympiad in Informatics (CEOI), and the Asia-Pacific Informatics Olympiad (APIO).

ICPC The International Collegiate Programming Contest is an annual programming contest for university students. Each team in the contest consists of three students, and unlike in the IOI, the studentswork together; there is only one computer available for each team.

The ICPC consists of several stages, and finally the best teams are invited to the World Finals. While there are tens of thousands of participants in the contest, there are only a small number1 of final slots available, so even advancing to the finals is a great achievement.

In each ICPC contest, the teams have five hours of time to solve about ten algorithm problems.Asolution to a problem is accepted only if it solves all test cases efficiently. During the contest, competitors may view the results of other teams, but for the last hour the scoreboard is frozen and it is not possible to see the results of the last
submissions.

Online Contests There are also many online contests that are open for everybody. At the moment, the most active contest site is Codeforces, which organizes contests about weekly. Other popular contest sites include AtCoder, CodeChef, CS Academy, HackerRank, and Topcoder.

Some companies organize online contests with onsite finals. Examples of such contests are Facebook Hacker Cup, Google Code Jam, and Yandex.Algorithm. Of course, companies also use those contests for recruiting: performing well in a contest is a good way to prove one’s skills in programming.