Tratto da Google Code Jam 2013 Qualification Round Problema B :
Alice e Bob hanno un prato davanti alla loro casa, a forma di rettangolo N metro per metro M. Ogni anno, cercano di tagliare il prato in un modello interessante. Hanno usato il loro taglio con le cesoie, che ha richiesto molto tempo; ma ora hanno un nuovo rasaerba automatico con più impostazioni e vogliono provarlo.
Il nuovo tosaerba ha un'impostazione di altezza: puoi impostarlo su qualsiasi altezza h tra 1 e 100 millimetri e taglierà tutta l'erba più in alto di h che incontra in altezza h. Lo corri entrando nel prato in qualsiasi parte del bordo del prato; quindi il rasaerba procede in linea retta, perpendicolare al bordo del prato in cui è entrato, tagliando l'erba in un'andana larga 1 m, fino a quando non esce dal prato dall'altro lato. L'altezza del rasaerba può essere impostata solo quando non è sul prato.
Alice e Bob hanno una serie di vari schemi di erba che potrebbero avere sul prato. Per ognuno di questi, vogliono sapere se è possibile tagliare l'erba in questo modello con il loro nuovo tosaerba. Ogni modello è descritto specificando l'altezza dell'erba su ogni quadrato 1m x 1m del prato.
L'erba è inizialmente alta 100 mm su tutto il prato.
Scrivi una funzione che accetta una matrice 2D di altezze intere e determina se il prato può essere tagliato di conseguenza.
Ecco 100 casi di test da Google Code Jam. I primi 35 casi dovrebbero passare, il resto no.
Il codice più corto vince.