Today The Portuguese city of Porto will host the final of the international programming competition ICPC 2019. Representatives of ITMO University and other teams from universities in Russia, China, India, the USA and other countries will take part in it. Let's tell you more.
icpcnews /flickr/ CC BY / Photos from the ICPC-2016 final in Phuket
What is ICPC
ICPC is an international programming competition among students. They have been held for more than 40 years - the first final passed way back in 1977. The selection is carried out in several stages. Universities are divided into regions (Europe, Asia, Africa, America, etc.). In each of them, intermediate stages are arranged, in particular, the semi-finals of Northern Eurasia took place at our university. The winners of the regional stages take part in the final.
At ICPC, teams of three participants using one computer (not connected to the Internet) are invited to solve a number of problems. Thus, in addition to programming skills, teamwork skills are also tested.
During the team competition get one computer for three persons. It runs Ubuntu 18.04 and has vi/vim, gvim, emacs, gedit, geany, and kate editors preinstalled. You can write programs in Python, Kotlin, Java, or C++.
When the team solves the problem, it sends it to the testing server, which evaluates the code. Participants do not know what kind of tests the machine is doing. If all of them are successful, the team receives bonus points. Otherwise, an error is generated and students are sent to proofread the code.
According to ICPC rules, the team that solves the most problems wins. If there are several such teams, then the winner is determined by the smallest penalty time. Participants receive penalty minutes for each solved problem. The number of minutes is equal to the time from the start of the competition to the acceptance of the task by the test server. If the team has found a solution, then it receives another twenty minutes of penalty for each incorrect attempt to pass it.
icpcnews /flickr/ CC BY / Photos from the ICPC-2016 final in Phuket
Examples of tasks
The objectives of the championship require teams to work coherently and concentrate. Additionally, they test knowledge of individual mathematical algorithms. Here is an example of a task that was offered to ICPC 2018 participants:
In typography, there is a term "river" - this is a sequence of spaces between words, which is formed from several lines of text. Some expert on (real) rivers wants to publish a book. He wants the longest typographic rivers to "form" on the page when printed in monospace type. Participants had to determine the width of the fields at which this condition would be met.
At the input, the program received an integer n (2 β€ n β€ 2 500), which determines the number of words in the text. Further, the text was entered: words on one line were separated by one space and could not consist of more than 80 characters.
At the output, the program had to show the width of the fields at which the longest "river" is formed, and the length of this river.