Journey of a Three-time TCO Marathon Champion: Part One
Member since 10/16/04. Specialties include marathon matches.
I still remember when I created my Topcoder account. I wanted to see the earnings of people in Component Design, so that I could estimate potential hourly rate from doing component stuff. I barely knew anything about UML and software design back then, but probably still more than I do know now. At that moment I was trying to organize my life, which usually involves finding a source of income. That was 10 years ago and during the 3rd year of my studies. I was absolutely bored with the studies. I had chosen CS, because I wanted to make computer games, and that was the closest major I could get. But I never imagined that I’d become so uninterested in my studies. Almost every day I’d devise a plan that would allow me to drop out from my university and do something else. And, like all of my ideas at the time, it died before I even started implementing it.
A few months forward, my plan was to create an amateur short movie. I was in the middle of writing the script and gathering people who could help me with it. That was probably the first thing that would come close to being done. I was meeting with many wannabe movie directors, operators, actors and sound engineers just to get a jumpstart into something that I have never done before. I planned to leave my university that year and then try my luck with getting into acting or directing school, even though it was highly unlikely that I’d be able to get into one. But then I discovered that it’s just way too hard for me to focus on a single task and one day when I was feeling bored (which means I had other things to do, but I didn’t feel like doing them), I launched up the arena and decided to participate in SRM for the very first time. To my surprise, it was hell of a lot of fun. Way more than I anticipated.
Programming contests quickly turned out to be my new hobby. I was lucky enough to start when it was still possible for mere mortals to qualify for the onsite finals. I managed to qualify for the finals of Google Code Jam in the same year, after only a few months of competing — something that I believe is impossible now, while in 2005 it didn’t seem like a big deal at all. Unfortunately, I wasn’t able to attend due to being sick at the time, but it still increased my motivation tenfold. Next year, I qualified for the Imagine Cup finals in India (along with other onsites), where I discovered that there are other types of algorithmic problems, although I had no idea that eventually those are going to become my specialty. But the biggest lesson I learned was that I absolutely love those onsite events. You get to travel, meet many interesting people, take part in thrilling contests and enjoy foreign culture. The only sad moment is when everything ends and you have to return to your normal life. So, naturally, my goal was to qualify for as many events as possible. Like a child, I wanted to have as much fun as I could and this was the best way to do it.
In 2008, after two failed attempts, I managed to qualify for the Topcoder Marathon finals. It was an interesting TCO for me for two reasons. First of all, it was the last time I was able to qualify in an Algorithm category — funnily enough, even though I stopped competing regularly 5 years ago, I’m still much better than I was in 2008, but I feel that getting into TCO (in algorithm track) is nearly out of my reach now. Second, and the more important reason, is that I was incredibly lucky, and I won the Marathon finals. I definitely didn’t feel like a contender for a champion title, so I was both very happy and surprised with the result. This was also the last finals where there was no close race for the first place. So why was this so important for me? It marked the point in time, where I finally started to believe in myself — for quite a long time I thought that I’m able to get decent results in Marathons because I put a lot of time into them, way more than anyone else.
My most memorable finals were just a year later. If you’re a long time competitor, you may have noticed that I often make submits without a proper “break” for sleep. I have a bad tendency for staying awake for very long periods of time. One such moment was right before the 2009 TCO. My plane to USA usually leaves somewhere between 6AM and 10AM and it happens quite frequently that I don’t sleep during that night, because I forget to pack my bags earlier and I’m finished with them only a few hours before the plane, so I opt for trying to get some sleep on the plane instead. In that particular case, my day started unusually early and (obviously) I didn’t have any sleep before the flight and (again, obviously) I couldn’t fall asleep on the plane. When I arrived, there was already a welcome reception going on and since I’m the guy who parties as long as he’s not forced to leave, I didn’t have too much sleep that night either. And, guess what? On the very next day, your 8-hour long finals start right in the morning. So, to sum things up, I was awake for a total of 40-45 hours and after less than 8 hours of sleep I had to compete in my exhausting competition. I still remember that feeling throughout the last 2-3 hours of the contest, where I designed all of my complex algorithms, but my body stopped cooperating with my mind and I could only do some very simple constant tweaking. Since the tweaks were all very simple, my solution ran very fast and there are no limits for submitting solutions during the finals, so I ended up with 147 submissions. Divided by 8 hours, it gives around 1 submission per 3 minutes. Apart from solving a Div-1 hard using assembler, that’s my biggest Topcoder accomplishment :)