Retirado do Problema B da Rodada de Qualificação do Google Code Jam 2013 :
Alice e Bob têm um gramado em frente à casa, em forma de um retângulo de N metro por M metro. A cada ano, eles tentam cortar o gramado em algum padrão interessante. Eles costumavam cortar com tesouras, o que consumia muito tempo; mas agora eles têm um novo cortador de grama automático com várias configurações e desejam testá-lo.
O novo cortador de grama tem uma configuração de altura - você pode configurá-lo para qualquer altura h entre 1 e 100 milímetros, e cortará toda a grama mais alto que h que encontre na altura h. Você o executa entrando no gramado em qualquer parte da borda do gramado; depois, o cortador de grama segue uma linha reta, perpendicular à borda do gramado em que entrou, cortando a grama em uma faixa de 1 m de largura, até sair do gramado do outro lado. A altura do cortador de grama só pode ser ajustada quando não estiver no gramado.
Alice e Bob têm vários padrões de grama que eles poderiam ter no gramado. Para cada um deles, eles querem saber se é possível cortar a grama nesse padrão com o novo cortador de grama. Cada padrão é descrito especificando a altura da grama em cada quadrado de 1m x 1m do gramado.
A grama tem inicialmente 100 mm de altura em todo o gramado.
Escreva uma função que utilize uma matriz 2D de alturas inteiras e determine se o gramado pode ser cortado adequadamente.
Aqui estão 100 casos de teste do Google Code Jam. Os primeiros 35 casos devem passar, o resto não.
O menor código vence.