Un sat ia forma unei matrice cu liniile numerotate de la la și coloanele numerotate de la la . Fiecare celulă este ori liberă, lucru semnalat prin , ori conține o casă cu locuitori. Dacă , casa este roz, iar dacă , este vișinie.
Voi va trebui să construiți un canal cu apă care pleacă din celula și ajunge în celula mergând pe patru direcții (adică nord, sud, est și vest). Canalul nu are voie să treacă prin case sau să iasă din matrice și trebuie să fie de lungime minimă. Formal, canalul este o succesiune de celule din matrice astfel încât:
- ;
- ;
- Pentru celulele și au o latură comună;
- este minim.
Se garantează că există cel puțin un canal.
Un canal împarte satul unic în două sectoare. Sectorul nord-estic conține celulele din afara canalului aflate pe prima linie și ultima coloană a matricei, dar și celulele în care se poate ajunge din acestea mergând pe opt direcții (nord, sud, est, vest, nord-est, nord-vest, sud-est și sud-vest) fără a ieși din matrice sau a trece prin celule ale canalului. Formal, o celulă aparține sectorului nord-estic dacă există o succesiune de celule din afara canalului astfel încât:
- ;
- sau ;
- Pentru celulele și au o latură comună sau un vârf comun.
- Atenție! Celulele succesiunii (inclusiv prima și ultima) pot să fie case.
Sectorul sud-vestic se definește complet analog plecând de la celulele de pe prima coloană și ultima linie. Se poate demonstra că toate celulele din afara canalului fac parte fie din sectorul nord-estic, fie din cel sud-vestic.
Locuitorii unei case vișinii sunt fericiți dacă casa se află în sectorul nord-estic, iar locuitorii unei case roz sunt fericiți dacă casa se află în sectorul sud-vestic.
Să se calculeze numărul de celule dintr-un canal și, dintre toate canalele posibile, numărul total maxim de oameni fericiți .
Date de intrare
Pe prima linie se află și , dimensiunile matricei, separate printr-un spațiu.
Pe următoarele linii se află matricea : a -a dintre acestea va conține , oricare două elemente consecutive fiind separate prin câte un spațiu.
Date de ieșire
Se vor afișa pe o singură linie cele două numere și , separate printr-un spațiu.
Restricții
- pentru și .
- Deoarece trebuie citite multe numere, vă recomandăm folosirea
std::ios_base::sync_with_stdio(false); std::cin.tie(0);ca primă linie în funcțiamain(), pentru a face citirea mai rapidă.
| # | Scor | Restricții |
|---|---|---|
| 1 | 12 | |
| 2 | 13 | Se garantează că există exact un drum pe patru direcții de la la care nu trece prin case și nu iese din matrice |
| 3 | 10 | și există cel mult 10 canale |
| 4 | 27 | Se garantează că |
| 5 | 14 | |
| 6 | 24 | Fără alte restricții |
Exemplul 1
stdin
5 5
0 -1 0 0 0
0 0 0 1 0
0 1 0 1 0
0 1 0 0 0
0 0 0 1 0
stdout
9 4
Explicație
În acest exemplu avem . Există un singur canal, format din celule, desenat mai jos cu albastru. În poza stânga, casele sunt colorate cu roz și vișiniu, iar în cea din dreapta vedem sectorul nord-estic evidențiat cu alabastru hașurat, iar cel sud-vestic cu verde hașurat. Toți cei 3 oameni din sectorul sud-vestic sunt fericiți, iar din sectorul nord-estic doar un singur om este fericit, de unde .

Exemplul 2
stdin
5 6
0 0 -1 0 0 0
1 0 1 0 8 0
0 0 1 0 7 0
0 4 0 0 6 0
0 0 0 -2 5 0
stdout
20 28
Explicație
