Cerința
În fiecare zi, cei 7 pitici lucrează cu spor în mina lor, pentru a colecta cât mai multe diamante. Mina poate fi reprezentată ca o matrice pătratică cu latura N
, în fiecare element al matricei aflându-se un număr cunoscut de diamante. Piticii au cumpărat o mașinărie specială, care să le faciliteze munca. Cu ajutorul acesteia, se pot colecta diamante în două moduri. Primul mod, denumit colectare principală, presupune colectarea diamantelor de pe K
diagonale învecinate, paralele cu diagonala principală a matricei; al doilea mod, denumit colectare secundară, presupune colectarea diamantelor aflate pe K
diagonale învecinate, paralele cu diagonala secundară a matricei. Piticii pot folosi aparatul o singură dată pentru un tip de colectare. În urma unei colectări, elementele afectate de aceasta nu mai conțin diamante.
Deoarece încă nu știu să folosească mașinăria la capacitate maximă, piticii au nevoie de ajutorul tău!
Scrieți un program care să-i ajute pe pitici, determinând:
1) Numărul maxim de diamante care pot fi colectate în urma unei colectări principale.
2) Numărul maxim de diamante care pot fi colectate în urma unei colectări secundare.
3) Numărul maxim de diamante pe care piticii le pot colecta din mină.
Date de intrare
Fișierul de intrare diamante.in
conține pe prima linie numărul C
, care poate fi doar 1, 2 sau 3.
Pe a doua linie a fișierului, se află numerele naturale N
și K
. Fiecare din următoarele N
linii conține câte N
numere naturale, reprezentând numărul de diamante aflate în fiecare celulă.
Date de ieșire
Dacă C
=1, fișierul de ieșire diamante.out
va conține un număr natural reprezentând numărul maxim
de diamante care se pot colecta în cadrul unei colectări principale.
Dacă C
=2, fișierul de ieșire diamante.out
va conține un număr natural reprezentând numărul maxim
de diamante care se pot colecta în cadrul unei colectări secundare.
Dacă C
=3, fișierul de ieșire diamante.out
va conține un număr natural reprezentând numărul maxim
de diamante care se pot colecta în mină, folosind mașinăria.
Restricții și precizări
1 ≤ n ≤ 500
1 ≤ k < 2 * n
- În fiecare celulă se află cel mult
5000
de diamante - Pentru 15 puncte,
C=1
- Pentru alte 15 puncte,
C=2
- Pentru 20 de puncte,
C=3
șiK=1
Exemplu:
diamante.in
1 10 3 2 1 6 4 5 8 8 9 3 5 5 8 7 7 3 1 9 3 3 9 5 2 5 6 8 8 1 2 8 3 2 4 8 8 5 3 9 7 4 9 3 2 5 8 7 7 3 4 4 8 1 2 8 3 3 9 3 4 1 8 6 5 5 2 5 6 6 1 1 4 2 1 9 9 1 7 4 4 5 5 1 7 9 4 9 4 5 4 5 3 7 7 7 9 5 5 3 5 8 4
diamante.out
145
Explicație
Numărul maxim de diamante obținute după o colectare principală este 145.
Exemplu:
diamante.in
2 10 3 2 1 6 4 5 8 8 9 3 5 5 8 7 7 3 1 9 3 3 9 5 2 5 6 8 8 1 2 8 3 2 4 8 8 5 3 9 7 4 9 3 2 5 8 7 7 3 4 4 8 1 2 8 3 3 9 3 4 1 8 6 5 5 2 5 6 6 1 1 4 2 1 9 9 1 7 4 4 5 5 1 7 9 4 9 4 5 4 5 3 7 7 7 9 5 5 3 5 8 4
diamante.out
152
Explicație
Numărul maxim de diamante obținute după o colectare secundară este 152.
Exemplu:
diamante.in
3 10 3 2 1 6 4 5 8 8 9 3 5 5 8 7 7 3 1 9 3 3 9 5 2 5 6 8 8 1 2 8 3 2 4 8 8 5 3 9 7 4 9 3 2 5 8 7 7 3 4 4 8 1 2 8 3 3 9 3 4 1 8 6 5 5 2 5 6 6 1 1 4 2 1 9 9 1 7 4 4 5 5 1 7 9 4 9 4 5 4 5 3 7 7 7 9 5 5 3 5 8 4
diamante.out
274
Explicație
Numărul maxim de diamante ce pot fi colectate este 274.