It seems that TopCoder likes to give away T-shirts in every 100 SRMs. I failed to participate in SRM 500 because I overslept that time, so I was happy when I managed to participate in SRM 600. In this SRM, they will give T-shirt for the top 60 participants and for 60 random participants that do not manage to make it to top 60.
Indeed, I was more than happy because I managed to grab a T-shirt, in a dramatic way! Here is the story:
– The SRM started at 00:00 in my local time. I set my alarm at around 23:30, and I woke up on time.
– I tried launching the Arena. It didn’t work! I indeed had some problems with the Arena and I think I had solved it, so I was so confused. Desperately, I tried opening the JavaWS cache viewer and the JNLP file and then comparing them. The arena-client-7.0.8.jar file was missing from the cache, so I tried manually downloading it via wget. It turned out that using my connection (Android portable hotspot), that file couldn’t be downloaded completely; I also didn’t know why. So I used wget several times using -c flag until it was downloaded completely. Then, I modified the JNLP file to point to the downloaded arena-client-7.0.8.jar. Here is an interesting point: I didn’t know how I got the inspiration to do those things! They suddenly popped up in my mind. Maybe it was due to the fear of missing SRM 600? 😀
– I was 10 minutes late in the coding phase. I opened 250, and then solved it 8 minutes. Couldn’t find any tricky cases, so I was pretty confident.
– Then I opened 600. We want to have at least R palindrome rows and at least C palindrome columns. Well, there are 2 conditions. To simplify things, why don’t we do brute-force on one condition? So, my solution is to choose which (at least C) columns we want to be palindrome using brute-force, and then compute the minimum cost to have at least R palindrome rows using dynamic programming. On the first compile, my code failed due to a missing ‘]’ character. On the second compile, my code compiled successfully, and passed all examples on the first try! I submitted it in 44 minutes.
– Coding phase was over. In challenge phase, I couldn’t find any interesting solutions. In the end, I ranked 72nd if I recalled correctly.
– System tests! I really hoped that I made it to the top 60. After systests, I passed both problems and my final rank was 61st! Off by one! I was so sad. I hope at least one person above me cheated so that my rank would go up to the top 60.
– Soon, there was a message telling that the 60 random participants had been selected and posted in the forum. I rushed and clicked the forum link provided in the message. But the forum was so slow and I couldn’t open it. I was so nervous!
– I gave up and intended to open it later. But then someone in the Arena told me that I was selected as one of the random 60 participants. Yay! I managed to get a T-shirt!
– Several days later, the admins announced the final results. Indeed there was one coder in the top 60 that cheated. So, my official rank is actually 60th. In other words, I got T-shirt from both slots 😀 As expected, they removed me from the random slot and assigned another lucky participant.
So that’s the story of me winning a(nother) T-shirt from TopCoder. It was also my first time to solve a 600-pointer problem, although I’m not sure whether it is assigned 600 because of the difficulty or because it is SRM 600. But I don’t care it anyway.