The contest
Presentation of the contest
SWERC has essentially the same structure as the ICPC contest, except that it takes place at the level of Southwestern Europe. The contest is fought between teams, each of which represents an institution from the region, i.e., a university, an engineering school, etc. Institutions choose the teams that they wish to send to SWERC; they cannot send more than a few teams, so they usually run an internal selection if too many students are interested.
Each team comprises three students from the institution. Each student must satisfy the eligibility requirements (see also team composition). The teams of each institution are accompanied by a coach, who serves as the person of contact for the institution: it is usually an older student or a member of faculty. The coach is the person who registers the teams (see registration), and usually organises their travel, hosting, etc.
The contest schedule will be published as soon as possible (see the schedule). Contestants will be provided laptops without Internet access from which to access the judging platform.
At the start of the contest, the problems will be made available on the judging system. Contestants have five hours to solve as many of these problems as possible. Each problem statement is written in English and describes some situation that can be solved with algorithmic skill, e.g., finding the shortest route from one point to another in a city, computing the area of a polygon, etc. To solve the problem, the team must write a computer program that produces the correct answer to the challenge, using one of the official programming languages of the contest. The problem statement specifies the input and output format, some limits on the problem parameters (instance size, etc.), and limits on memory, running time, etc.
When a team thinks that they have solved a problem, they submit their program to an automated judging system for evaluation. The judging system tests the program on a secret set of inputs and outputs, and verifies that the program always returns the correct answer, without crashing, and respecting the running time and memory limitations. If the program passes the tests, the judge gives an ACCEPTED verdict, and the team has successfully solved the problem. Otherwise, the judge gives a verdict with some information about the issue (e.g., WRONG ANSWER when the program returns an incorrect answer on some test case, TIME LIMIT EXCEEDED if the program did not complete in the required time, RUNTIME ERROR if it crashed, etc.). In this case, the contestants have to identify the problem and fix it: they are not provided with more information about the cause of the error or the test case that triggers the error.
During the contest, the team members work together, but they cannot be helped by their coaches or by anyone from the outside; also, they cannot communicate with other teams. The problems must be solved in the programming languages of the contest, i.e., C, C++, Java, Kotlin, Python 3, and OCaml. The code is compiled and evaluated on the judging system: see the environment information for details of the versions used.
At the end of the contest, the teams are ranked by the number of problems that they have solved, and ties are broken based on the time that they took to solve the problems (see scoring). This is how the final standings for the contest are derived; see for instance the standings from SWERC 2017. The best teams receive medals: the top 2 teams receive gold medals, the next 4 teams receive silver medals, and the next 8 teams receive bronze medals. Further, the highest-ranking teams (usually at least the first two teams) are selected to participate to the ICPC World Finals, where they compete against teams from all over the world.
The organization committee of SWERC changes every few years, and usually comprises faculty from the host institution as well as volunteers. See organizers for details about the current organizers. SWERC 2021-2022 will be held in the Polytechnic University of Milan. Before this, the SWERC editions between 2017 and 2020 were held at Télécom Paris; see past editions for details about previous editions.
Preparing for the contest
To perform well at SWERC, it is crucial that the team members are used to solve algorithmic problems and that the team knows how to work efficiently together.
Team members should become acquainted with the format of the problems and with the algorithmic concepts that usually occur in problems; and of course they should have some practice with one of the official programming languages, to write code quickly and debug it efficiently.
Teams should train together to learn how to collaborate, to share the computer between the team members, and to allocate the time between problems. The best way to train as a team is to get together with your team members and try your luck on some ICPC contests from previous years simulating the contest environment (so using only one computer and for a duration of ~5 hours).
There are websites that collect such contests, and also provide a judging system to test your solutions. A large collection of ICPC contests is offered on websites such as
- Codeforces Gym ICPC contests
- Official contests in Kattis
- ICPC Live Archive
- List of all Open Cup contests
There is also plenty of documentation online about the format of the ICPC contest and how to train for it, if you are interested google how to prepare for icpc
and you will find a lot of information.
The best teams that participate to ICPC prepare a team reference document (aka "notebook") with the code for common algorithms, to be used during the contest. See the regulations page for details about what the notebook can contain. An example of notebook is the one from the KTH Royal Institute of Technology. Please note that we only link this notebook for illustrative purposes and do not otherwise endorse its contents.
Other programming contests
We list here some competitive programming platforms hosting contests not necessarily in the ICPC format with a brief description:
- Codeforces, platform organizing many individual contests per month.
- Codechef, platform organizing many individual contests per month.
- AtCoder, platform organizing many individual contests per month.
- Kattis, platform hosting mirrors of various regional ICPC contests.
- CSES, a well-thought list of classical problems in competitive programming.
- Google Code Jam, series of contests with an on-site final.
- Facebook Hacker Cup, series of contests with an on-site final.