TopCoder was interesting this evening. I gained 99 rating points for a strong finish, solving the 250 and 500 in mediocre time. 'Twas fun!
Especially the 500. It required my knowledge of cleverness in tree/graph algorithm stuff, and it took actual programming to solve, but I could do it. It wasn't one of those impossible 1000s, and it wasn't a "here's the algorithm, implement it." I don't feel like recapping the problem or my solution- either can be found (my handle there is Windrider) on the TopCoder web site.
What was fun was when trying to compile the program, it spit out a useful little compilation error. Heading to the line, it suddenly pointed out a huge gaping logic error I had made. I'd never have found it if I wasn't required to cast absolutely everything in Java; I would have spent a bunch of time tracing a phantom runtime error. Instead, my program ran perfectly the first time it actually compiled.
Yay for strict languages!