Double Olympian Tunan Shi on the 2020 IOI

Remember last year, how Joshua, the team leader for 2019, forced me to write the first IOI blog post and then claimed that I wanted to write it? Well, this year, I was *persuaded* to do it. There is a very big distinction to make here. Once again, we see a prime example of how persuasion can be more effective than force.

The cast of this year’s IOI shenanigans include the 2020 team leader Kevin, newly appointed deputy team leader Angus, team members Junhua, Quang, Isaiah and Tunan (me!), and reserve Jerry. This year, the IOI was a fully online competition, requiring us to access the contest system remotely by running provided virtual machines. Go watch the Informatics section of the Australian Olympiad Teams Announcement video for 2020 – there may or may not be a small puzzle for you to decipher!

Before IOI

We begin our countdown 1 week before the official start date of the IOI. We meet online to take a series of trial exams and hone our exam technique. The trial contests also served an additional purpose – to adjust our sleep schedule. The actual IOI contest runs from 9pm to 2am AEST on both days, so we had to get used to coding and problem solving at our best during such hours. Personally, I feel bad for the New Zealand IOI team, who have to take the contest from 11pm to 4am in their local time. During our downtime, one of the favourite pastimes shared among Quang and me was playing the challenging indie platformer video game, Celeste. Did you know that one of the more prominent members of the Celeste community was once a tutor for the Australian Informatics program and an IOI medalist?

Moving closer towards the date of the IOI, we opted to do several more relaxed group problem solving sessions instead of full-on contests to maintain our problem solving skills. We also had an individual problem solving session, where the tutors would give us problems one by one and we would try to convince our tutors of our solution to the problem. One of the problems given was:

Given N infinite lines, you start at a large negative value (before any intersections happen) on one of the lines. You travel to the right along your current line until you hit an intersection with another line, in which case you switch to the other line, continuing to go to the right. No line is vertical and no three lines intersect at a common point. Which line do you end up on, after all intersections are complete? Your algorithm should run in O(N log N).

Avid maths olympians out there would immediately recognise the duality of this problem with a certain IMO 2011 problem.

IOI Week

The first day of IOI week saw us testing our filming setups so that our team leaders could supervise us doing the contest. The IOI practice session was a great chance for us to test the contest system. We were ecstatic to see that the contest system uses C++17 (as opposed to C++14 last year). Similar to last year, we tested various aspects of the contest system including working out the approximate computation speed of the contest server. We devised a new metric this year – SOPS (Segtree Operations Per Second), which is the number of random queries that a segment tree data structure with one million elements can support every second. The judging server clocked in at about 4 million SOPS. Not bad, IOI.

IOI Day 1 was tense for all of us. We are all in year 12, so this was going to be the only chance we would have at participating in an IOI. We had to set up our contest VMs 4 hours before the contest starts, and also set up the streaming equipment an hour before the contest. Some people crammed some last-minute coding exercises, while others tried to relax for a bit by listening to music. Junhua, on the other hand, turned to anime for the first time for relaxation. He really enjoyed watching Your Lie In April. Awaiting the beginning of the contest with anticipation and anxiety, I stared at the time being displayed at the top of my screen. Soon, it would be 9pm, and the contest would begin.

After the contest, we shared some nervous thoughts. Quang and Isaiah are both around 10 points away from the bronze cutoff, Junhua is comfortably in bronze but around 20 points away from silver cutoff, and I barely made it to the territory of silver medals. The scores of the contestants were quite close after day 1, which means that everybody still had quite a good chance at a medal.

We had 2 days of rest, and IOI day 2 loomed around the corner. Being more used to the procedures, we set up our VMs and nervously awaited the start of the second day of contest. Those who were already inside a cutoff were determined to solidify their lead, and those who were slightly below, were determined to jump into the medal cutoff zone through their performance in day 2.

What a second day! Through our contest performance, we have managed to achieve one silver medal and three bronze medals. Considering that everybody started their informatics journey a mere two years ago, I would consider this to be a tremendous success! This year, I walk away with a silver medal in 69th place and Quang, Junhua and Isaiah walk away with bronze medals, achieving 102nd, 118th and 164th place respectively.

After the contest, we were amused to discover that our deputy team leader and former contestant Angus had in fact submitted a problem to the IOI – “Mushrooms”. We were additionally amused to find out that he did not have the full solution – the IOI had modified his problem to be even harder than he had made it!

This year’s IOI will truly be a competition that I will never forget. To all of my friends in the Australian Informatics Program and the AMT – thanks so much for completely changing my life, and helping and supporting me along the way! ❤️❤️❤️

(Special mentions go to Optiver for providing me with snazzy t-shirts, here’s Quang hard at work in his room)