The International Collegiate Programming Contest (ICPC) is an annual algorithmic programming competition, considered the “Olympic of Programming Competitions”. Each year witnesses student programmers from more than 3,000 universities spread across 115 countries participating in the qualifying rounds. It was started in 1970 at Texas A&M University as an intra-university competition and from 1989 onwards, it was held globally.
ICPC consists of two rounds, regionals and the world finals. Regionals are organised by local universities of different regions across the globe. Top 1-2 teams from each regional round get to represent the country in the world finals.
This year the World Finals were held in Moscow. We are elated to let the reader know that this year, from our institute, a team successfully qualified and participated in this event and secured a rank of 41 globally. The team AlwaysReadyToOverkill consisted of Naman Jain, Kalash Gupta and Harish Yadav. BSP IIT Delhi got the chance to interview them after the results were out in order to shed light on their journey, both personally and as a team, the competition and their overall experience.
Q1. What did your interest in competitive programming and coding stem from?
K: I was slightly introduced to competitive programming during my JEE years. My computer science teacher in school encouraged me to look up various sites and resources, which is very much how I started coding. It was a new field for me, a sort of stress buster from the overload and pressure of JEE and coaching. I continued coding through college and took part in events conducted by ANCC. I soon contacted seniors in ANCC who were equally interested in coding. Soon enough, I found myself competing at the ICPC world finals.
H: I started competitive programming only after entering college. I had a keen interest in the problems discussed and assigned to us in our first-year introductory course to computer science and continued further study in it. I soon got acquainted with the various sites on which people practice problems with the aid of a close friend of mine. We used to sit and discuss issues on competitive programming, something I enjoyed and cherished a lot. Naman soon contacted me, and he, Kalash, and I soon formed a team to compete in ICPC.
Q2. What has the preparation journey for ICPC been like? How did you manage to build teamwork? What were the challenges you faced during this preparation journey?
K: It wasn't easy for us, honestly. We had different time schedules. Naman had his internships taking away a lot of his time. Besides that, since COVID delayed the competition, he also had to take out time from his job towards the end. We had a lot of sleepless nights and had to manage the burden of academics. However, those sleepless nights were pretty enjoyable and essential for our team building. We majorly practiced 5-hour competitions on Codeforces. We practiced on sites like Atcoder and CodeChef for long challenges to help us prepare for the competition. We did team contests at the beginning of my third year mostly. We took part in contests during preparation for the regionals. After COVID, Harish had stopped practicing as he had to prepare for his end semester exams to hold team practices. However, individual courses continued. Moreover, after a 1.5-year delay due to COVID, the competition had its format ramped up significantly, giving us slight difficulty in adaptation and coordination. Many teams had dropped out of the world finals due to either travel restrictions or just inability to appear for the competition. It had been a very tough time for everyone overall. We’re glad we could make it with a reasonably good amount of practice.
Q3. How was your journey through the regionals?
The conduction of regionals involves dividing the country into 4 to 5 regions. Teams can participate in a single regional or multiple regionals based on their preference. We had to take up the Amritapuri regional and the Gwalior-Pune regional. The first 3-4 problems were easy, and good teams were expected to solve up to 10-11 problems in the regionals. It was more of an implementation-type test. The top team was directly selected for the world championships. The following best teams were sent to the Asia West Continent Final Competition. Since we were third, we had to go to the Asia West Continent Final Competition and ended up qualifying from that competition to the ICPC WF before COVID. Many teams had withdrawn from the competition due to COVID, allowing some lower-ranked teams to appear for the World Championships.
Q4. What do you think you did differently that made you stand out from the other teams that compete in ICPC?
K: We had a strong division of topics and implementations among team members. This allowed each of us to devote adequate time to a particular case that we had confidence that we could excel or be sufficiently good at. We also identified our strengths and weaknesses based on which we divided our tasks. Naman’s strong point was number theory. I had a good grasp of Graph theory, and Harish was the fastest in coding our solution. Moreover, for each of us, competitive programming was something that we genuinely enjoyed. None of us was interested in it because it is deemed helpful in placements. Regular practice and healthy teamwork were all we had in hand.
Q5. Was there any sort of institute support provided?
For the most part, we did not require anything from the institute except for the certificate of admission used for registration for the competition. We used to practice using the computer labs in the Bharti Building. We had help from Professor Amit Kumar, a guide and supporting mentor for us. Funding for the travel and the rest of the requirements were our call.
Q6. We would love to know about your experience in Moscow at the world finals. How was your interaction with the teams? What other activities did you partake in?
The time spent in Moscow has been a core memory for the three of us. It was a week’s stay in Moscow. For the world finals, we were first introduced to a mock environment whereby we could get accustomed to the formalities of the competition. To comply with COVID-19 protocols, glass shields and audio set-ups were installed at the finals. We started the finals with optimization problems coming our way. Initially, we stumbled on the problems but managed to pick up later on. This year, there were more problems since we had 3 PCs instead of 1 PC for the whole team. Towards the end, to compensate for the time lost in solving the initial problems, we decided to ignore the penalties and attempt the problem to get some bonus points since we knew we would not solve it correctly in the given time crunch.
We had a fair amount of interaction with other teams. We met the different regional champions of India. That is, we met teams from IIT Roorkee, Kanpur and Guwahati. We eventually went roaming around Moscow with them too! However, the most fun part came when we went skydiving with them. We did spend some time with the host; however, we could not interact much because of a language barrier. It was also challenging to comply with Harish’s food habits among us being vegetarian. Nevertheless, it was a good trip, giving us a fantastic experience.
Q7. Competitive programming indeed consumes a lot of time, considering the amount of practice that has to be put into it. How did you manage it simultaneously whilst taking courses for your engineering degree?
Managing academics with long hours of practice in coding was a challenging feat. It was tiring to maintain attendance in classes and keep up with the various assignments and quizzes, but we managed to cover them. Since the three of us had different schedules, it was also difficult to match our schedules and find time to practice. Close to the finals, as we had to increase the duration of practice, Kalash and Harish had to prepare for college exams in the very last week just in the nick of time.
Q8. What opportunities do you think competitive coding has opened for you? Do you have plans concerning competitive programming?
K: For me, competitive programming is primarily a hobby. More practice has only improved my skills and problem-solving capacity in general. I felt ANCC was an excellent platform to develop my problem-solving skills. I hope to retain my interest even after getting a job or settling down in my career as it unfolds.
H: I feel competitive coding has improved my problem-solving skills, and now I enjoy it as a hobby. It is undoubtedly a good point on your resume but far more than that. Coming across problems, devising the algorithms to solve them, and then implementing them gives one a level of satisfaction that is difficult to express in words. I don't have concrete plans about it, but I hope to continue.
Q9. Do you have a message for students interested in competitive programming and who might be aiming for the next ICPC?
Competitive programming is all about practice and trying to understand and analyse problems using mathematical concepts. It can be gratifying, depending on how one takes it. For those preparing for ICPC, build teamwork through extensive practice, identify your strengths and use them to the maximum of your potential. ICPC is not a final stop for those interested in competitive programming. The journey through the practice is cherishable, whether team or individual. Good luck!