raze

Time limit: 0.2s Memory limit: 2MB Input: raze.in Output: raze.out

Harta digitală a câmpului de luptă este memorată într-un tablou bidimensional cu NN linii, MM coloane și elemente din mulțimea {0,10,1}. Valoarea 00 reprezintă o poziție liberă, iar valoarea 11 reprezintă o poziție ocupată de un obstacol. În fiecare element aflat pe conturul tabloului, adică pe prima linie, prima coloana, ultima linie și ultima coloană, se află obiective inamice. Pe conturul tabloului se găsesc numai elemente nule.

În interiorul tabloului (elementele care nu se află pe contur), într-o poziție liberă, trebuie plasat un soldat. Scopul său este să anihileze cât mai multe obiective inamice. Din păcate, el deține o armă laser cu care poate executa doar un singur atac. La lansarea atacului, se trimit 44 raze, câte una în fiecare dintre cele 44 direcții diagonale. O rază poate merge până la întâlnirea unui obstacol (în acest caz se oprește și nu va avea nici un efect) sau până ajunge pe contur (în acest caz distruge obiectivul inamic respectiv).

Cerință

Scrieți un program care determină numărul maxim de obiective inamice, notat cu KK, ce pot fi distruse în urma unui atac, precum și numărul pozițiilor în care putem plasa soldatul pentru a distruge KK obiective inamice.

Date de intrare

Fișierul de intrare raze.in conține pe prima linie numărul natural TT, reprezentând numărul seturilor de date de intrare. Pentru fiecare set de date de intrare în fișierul de intrare pe prima linie a setului se află numerele naturale NN și MM, separate printr-un spațiu, reprezentând numărul liniilor, respectiv numărul coloanelor tabloului; pe următoarele NN linii ale setului de date se află câte M numere naturale din mulțimea {0,10,1}, separate prin câte un spațiu, reprezentând forma digitală a hărții câmpului de luptă.

Date de ieșire

Fișierul de ieșire raze.out va conține TT linii, corespunzătoare celor TT seturi de date de intrare. Pe fiecare linie se vor tipări două numere naturale KK și PP, separate printr-un spațiu, reprezentând numărul maxim de obiective inamice distruse în atac, respectiv numărul pozițiilor din care se pot distruge KK obiective inamice.

Restricții și precizări

  • 1T801 \leq T \leq 80
  • 3N,M1353 \leq N, M \leq 135
  • Se garantează că există cel puțin un obiectiv inamic ce poate fi anihilat pentru fiecare set de date de intrare.

Exemplu

raze.in

2
4 6
0 0 0 0 0 0
0 0 1 1 1 0
0 0 0 0 0 0
0 0 0 0 0 0
4 7
0 0 0 0 0 0 0
0 1 1 1 1 1 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0

raze.out

4 1
3 2

Explicație

În fișier se găsesc două seturi de date de intrare.
În primul set de date se pot anihila maximum 44 obiective inamice, poziționând soldatul în linia 22 și coloana 22.
În al doilea set de date se pot anihila maximum 33 obiective inamice, poziționând soldatul în elementul de pe linia 33 și coloana 22 sau în elementul din linia 33 și coloana 66.

Log in or sign up to be able to send submissions!