ACM ICPC World Finals 2009
The main challenge in this problem is to build a convenient representation of the current game state, for computing the scores of the players and the possible next moves. With this hurdle out of the way, the problem can be solved using a standard min-max search, along with alpha-beta pruning to make the search fast enough.