tjq surprises everyone by striking three bullseyes
by Lars Backstrom, (lbackstrom)TopCoder Member
In what was by far the most exciting match of the day, tjq edged out three members with little targets next to their names and advanced to the finals. Perhaps the 25 hour flight from Hong Kong allowed him to study up on his algorithms while his competition was out partying. Or maybe his lower rating is just due to the network latency from the states to the other side of the world. Whatever the reason, tjq was dominant in the room with the highest average rating.
At the start, all four coders went for the easy problem - which was probably the easiest problem of the semifinals. TopCoder legend, NGBronson, submitted it first, in a little under five minutes for 243.09/250 points. Fast fingers Zorba was in next, only 14 seconds behind. snewman, the only coder to use C#, submitted next for 233.89 points. tjq was just getting up to speed on this problem, and submitted after 9:38 for 225.34 points.
No one chose the strategy pioneered by dmwright, and vindicated by bstanescu in round 1. So, at the 10 minute mark, the gap between first and last was a mere 17.75 points. After another 15 minutes or so of silence, NG managed to work out all the bugs of the medium graph problem, and submitted it for 366.66 points. tjq submitted his medium three and a half minutes later, but since he got a later start, his score was only 0.04 less than NG's. The race was far from over though, and Zorba submitted in another minute, while snewman kept it close, submitting just seconds after Zorba.
At the half hour mark, all three coders had submitted the easy and mediums. NGBronson maintained his lead, with 609.75 points, while tjq was a close second, with 591.96. ZorbaTHut and snewman were both still within a single challenge, with 562.61 and 569.90 points, respectively.
With forty-five minutes to go, it looked certain that the scores were far from final, as coders started in on a tricky 1050. tjq shocked everyone, submitting his problem in 8:14, for 970.98 points, then sat back and smirked at the other coders. For the next 15 minutes, the room was silent except for intermittent whispering by spectators, and furious scribbling by coders.
snewman, with his perfect reputation on the line (the GCJ notwithstanding), submitted the hard next, for 702.73 points. Not long after that, tjq stopped smirking, and got back to work, uncovering a bug in his medium submission, costing him 187 points. But, he wasn't the only one having trouble. snewman found something wrong with his 1050, and resubmitted it, costing him over 200 points, and putting him far behind tjq. After a little over an hour, ZorbaTHut checked in his hard problem, for 568.72 points. After questioning the admins, tjq realized that his medium wasn't the only flawed submission, and resubmitted his hard. With two resubmissions, it looked like the victory was out of reach for tjq, but his hard resubmission led him to a challenge case that gave him 100 points in the challenge phase. The last action of the round was a submission of the hard by NGBronson, which meant that every coder submitted every problem.
At the end of the coding phase, ZorbaTHut was winning with 1131.33, NGBronson had 1106.15, snewman had 1067.15, and tjq was way behind, with 856.92.
Up to this point, the challenge phases have been about as exciting as simulation problems, but the resubmissions and the quantity of submissions foretold an exciting phase. tjq came out strong, with successful challenges of ZorbaTHut and NGBronson in the first minute - using the same case he failed on. But the 100 points didn't look like it was gonna be enough, since snewman's hard problem was still standing, and tjq was still over 100 points behind. snewman helped out a little bit, breaking his streak and failing a challenge of tjq. But, that was all the action in the challenge phase, and most people were still skeptical that tjq could pull off the come back. At the end of the challenge phase, snewman held first with 1017.54, while tjq was in second with 956.92.
Everyone gathered 'round the scoreboard and waited with bated breath as systests were run. First, the results of the 250 came up, showing that NGBronson failed, while the other coders all passed. Next, the hourglasses spun, and a big red X appeared next to tjq's name, indicating that, despite the resubmission, his 500 still had some problems. However, the loss wasn't that great, since the resubmission had given him a low score. Finally, after what seemed an eternity, hourglasses appeared for the hard problem... and snewman went down, giving tjq the incredible come from behind victory.
After the contest, tjq commented that his first 1050 was correct, aside from a small formatting bug, making his victory even more impressive. He then went on to state matter of factly that "it was very exciting."