Looking for a Challenge 2
Total Page:16
File Type:pdf, Size:1020Kb
Looking for a Challenge 2 Problems from the Polish Collegiate Programming Contest 2011{2014 Copyright c by the Faculty of Mathematics, Informatics and Mechanics, University of Warsaw Warsaw 2019 Original title: W poszukiwaniu wyzwa« 2 Zadania z Akademickich Mistrzostw Polski w Programowaniu Zespoªowym 2011{2014 This translation based on second edition (version 2.1) Editors Krzysztof Diks, Tomasz Idziaszek, Jakub Łącki, Jakub Radoszewski Translation Tomasz Idziaszek (solution descriptions, additional materials), Jakub Łącki, Jakub Radoszewski, Łukasz Warakomski (problem statements) Authors of solution descriptions Szymon Aceda«ski, Tomasz Idziaszek, Adam Karczmarz, Tomasz Kociumaka, Eryk Kopczy«ski, Jakub Łącki, Jakub Radoszewski Authors of problems and model solutions Szymon Aceda«ski, Marcin Andrychowicz, Karol Cwalina, Marek Cygan, Dawid D¡browski, Krzysztof Diks, Paweª Gawrychowski, Tomasz Idziaszek, Adam Karczmarz, Tomasz Kociumaka, Eryk Kopczy«ski, Karol Kurach, Jakub Łącki, Jakub Pachocki, Jakub Pawlewicz, Jakub Radoszewski, Wojciech Rytter, Bartosz Szreder, Wojciech Śmietanka, Jacek Tomasiewicz, Wojciech Tyczy«ski, Tomasz Wale« Introduction We present our Readers with descriptions of model solutions of problems from the Polish Collegiate Programming Contest that took place in years 2011{2014. These four editions of the contest (called in Polish Akademickie Mistrzostwa Polski w Programowaniu Zespoªowym and abbreviated AMPPZ) were organized by the Faculty of Mathematics, Informatics and Mechanics and the Faculty of Manage- ment at the University of Warsaw. The main sponsor of the competition was PKO Bank Polski, and the PKO Bank Polski Foundation supported content-related preparations of the contest and funded scholarships for the best students. The success of any programming competition depends primarily on proper se- lection of competition tasks and efficient conduct of the contest. The problem set should be chosen so as to give each competing team a chance of solving at least one task, and at the same time allow to select actual champions. The problems should be original, interesting, and stimulate to improve the skills of all, who did not solve them during the competition. The level of the problems in AMPPZ in years 2011{2014 was watched over by three young scientists from the Faculty of Mathematics, Informatics and Mechanics at the University of Warsaw | Tomasz Idziaszek, Jakub Łącki and Jakub Radoszewski | supported by a large num- ber of students, PhD students and employees of the Faculty. They have prepared 44 original problems. Preparation of each of them required implementing model and alternative solutions, as well as the proper set of tests verifying the quality of solutions of the competitors. Team programming competitions could not take place without proper technical facilities: computers connected with an efficient network and specialized competi- tion software that evaluates live solutions sent by the competitors. The creators of this software, also used in many other programming competitions organized by the University of Warsaw, are Szymon Aceda«ski and his team from the Faculty of Mathematics, Informatics and Mechanics at the University of Warsaw. iii This book contains detailed discussions of solution to problems from AMPPZ in years 2011{2014, written by outstanding young scientists working in the field of algorithmics, who have also achieved significant successes (as competitors and organizers) in team programming competitions in the national and international level. The Polish descriptions of model solutions have been prepared as part of the Masters of Algorithmics project, which the aim was to prepare students of the Faculty of Mathematics, Informatics and Mechanics at the University of Warsaw for participation in programming competitions. In 2015 we published these solutions in printed form, and now we share them online in electronic form. Moreover, we have decided to prepare English versions of these descriptions to the benefit of the whole international community. Anyone, who would like to solve the tasks, can use the portal szkopul.edu.pl (links to the individual problems are also given inside the book). Tasks from AMPPZ are an excellent training material for anyone who would like to improve their algorithmic and programming skills, or explore the arcana of algorithms for their own satisfaction. We have marked the difficulty level of each problem with stars, so that every reader should be able to find something for themselves. One star denotes the simples tasks, whereas the most difficult are denoted by four stars. We invite you to read the book, while wishing you a great intellectual experi- ence. Acknowledgements The Polish Collegiate Programming Contest in years 2011{2014, organized in War- saw by the University of Warsaw, were large organizational undertakings, requiring non-standard solutions (logistic, technical and content-related) in the field of com- puter science. Many institutions and people contributed to the realization of these undertakings. I am grateful to all who have made these competitions so successful. At the same time, I would like to thank in a special way to the most involved in the preparations of the Championships. Warm words of thanks go to Mr. Zbigniew Jagieªªo, the President of PKO Bank Polski, and Mrs. Urszula Kontowska, the President of PKO Bank Polski Founda- tion, for understanding the importance of such competitions in development of Polish IT and its promotion in the world. PKO Bank Polski as the main sponsor of the competition in Warsaw and teams of the University of Warsaw, contributed significantly to strengthen the rank of the Championships and the successes of Poles in international programming competitions. The championships were held at the University of Warsaw with the use of university infrastructure. I thank the university authorities for kindness and sup- port in carrying out such a complex organizational project. In particular, words of gratitude go to the Rectors of the University of Warsaw: Mrs. Prof. Katarzyna Chaªasi«ska-Macukow, the Rector in years 2005{2012 and Mr. Prof. Marcin Paªys, the Rector in years 2012{2016, as well as Vice-Rectors: Prof. Tadeusz Tomaszewski and Prof. Alojzy Nowak. Great understanding and help was given by the deans of the faculties directly organizing the competitions: Prof. Stanisªaw Betley and Prof. Andrzej Tarlecki (from the Faculty of Mathematics, Informatics and Mechan- ics), as well as Prof. Alojzy Nowak and Prof. Jerzy Turyna (from the Faculty of Management). iv The competition took place at the Faculty of Management at the University of Warsaw. Each time the Faculty gym was transformed into a great computer labo- ratory equipped with dozens of computer workstations connected into an efficient network, with servers and printers in the back room, and the ability to conduct television and internet broadcasts. The contests required specialized, dedicated software that enabled their carrying out in real time. It can be said without ex- aggeration that the technical side of the competition was secured by world-class professionals, who worked under the leadership of Marek Mossakowski and Jerzy Rolewicz from the Faculty of Management (room preparation, energy security, computer network) and Szymon Aceda«ski from the Faculty of Mathematics, In- formatics and Mechanics (dedicated competition software). I express the highest words of recognition to everyone working on the technical support of the compe- tition. Similarly to the technical, the content-related part of the competition was at the highest world level. I address words of admiration and gratitude for their work to Tomasz Idziaszek, Jakub Ł¡cki and Jakub Radoszewski, who together with a large number of students, PhD students and employees of the Faculty of Mathematics, Informatics and Mechanics, have put a titanic effort into preparation of task competition and running a competition itself. Finally, I would like to thank the people who directly helped me coordinate the preparation and conduct of the competition in the years 2011{2014. Working with them was a real pleasure. I thank Prof. Jan Madey for introducing me to the world of programming competitions and heading with me the competition in Warsaw. I thank Rafaª Sikorski, a lawyer who liked computer science, for all daily organizational help. I am also grateful to Krzysztof Ciebiera, on whom I could always count, for his, often priceless, advice regarding organization of competitions and technical solutions. Krzysztof Diks About programming competitions Team programming contests test the knowledge and skills needed at the work of every programmer. The work of algorithmists and programmers, thanks to whom we can store enormous amounts of information, so that we can search them very quickly and reach out to those just of interest to us, indirectly affects life of ev- eryone of us. Like all practical IT problems, every competition task boils down to developing a method (algorithm) of rapid data processing to calculate the desired results. You need to be aware, that a participant of the competition not only has to arrange an appropriate algorithm, but also correctly program it in the program- ming language of their choice (usually C++, C, Java, or Python). It is known that even experienced programmers have to work hard to write a working program. On the way to this aim, they first fight with syntactic (compilation) errors, then they carry out a number of tests to eliminate logical errors, and finally they analyze the performance