Birocratie

Time limit: 0.5s Memory limit: 64MB Input: birocratie.in Output: birocratie.out

Boris este un afacerist de succes, având contracte care aduc pe de o parte venituri (dobânzi, comisioane etc.) dar și obligații la taxe (impozite, rate etc.).

Boris s-a hotărât să viziteze o clădire de birouri. Clădirea are un singur nivel în care birourile sunt lipite unele de altele formând un caroiaj pătratic de dimensiune N×NN \times N. Planul birourilor se poate reprezenta ca o matrice pătratică, unde birourile sunt elemente din matrice cu liniile și coloanele numerotate de la 11 la NN. Mai exact, la linia ii, coloana jj se găsește biroul (i,j)(i, j).

Boris va intra în clădire prin biroul (1,1)(1, 1) și va trece printr-o serie de birouri. Traseul se va termina în biroul (N,N)(N, N). La trecerea dintr-un birou în altul se permite:

  • pe același rând doar de la stânga la dreapta: (i,j)(i,j+1)(i, j) \rightarrow (i, j + 1);
  • pe aceeași coloană doar de sus în jos: (i,j)(i+1,j)(i, j) \rightarrow (i + 1, j);
  • în sens diagonal în următoarele două direcții:
    • (i,j)(i+1,j1)(i, j) \rightarrow (i + 1, j − 1), dar și
    • (i,j)(i1,j+1)(i, j) \rightarrow (i − 1, j + 1).

Totuși, Boris nu se va mai întoarce niciodată într-un birou din care a ieșit.

De câte ori Boris vizitează un birou (i,j)(i, j) el încheie un contract în valoare de B(i,j)B(i, j) lei. Dacă B(i,j)>0B(i, j) \gt 0, atunci el primește B(i,j)B(i, j) lei, iar dacă B(i,j)<0B(i, j) < 0, el plătește B(i,j)−B(i, j) lei. Scopul lui Boris este acela de a ieși din clădire cu un câștig total maxim. Câștigul se definește ca fiind totalul de bani primiți minus totalul de bani plătiți pe traseu.

Atenție! Câștigul poate să fie și negativ dacă Boris plătește mai mult decât primește.

Cerință

Cunoscând planul birourilor și valorile B(i,j)B(i, j) pentru 1i,jN1 \leq i, j \leq N care îl așteaptă pe Boris în fiecare birou, ajutați-l să calculeze câștigul maxim pe care îl poate avea la ieșirea din clădire.

Date de intrare

Fișierul de intrare birocratie.in conține pe prima linie numărul NN, iar pe următoarele NN linii câte NN numere întregi separate prin spații, reprezentând valorile B(i,j)B(i, j) pentru 1i,jN1 \leq i, j \leq N.

Date de ieșire

Fișierul de ieșire birocratie.out va conține o singură linie pe care se află un singur număr întreg reprezentând câștigul maxim posibil.

Restricții și precizări

  • 5N1 0005 \leq N \leq 1 \ 000;
  • 1 000B(i,j)1 000-1 \ 000 \leq B(i, j) \leq 1 \ 000 pentru 1i,jN1 \leq i, j \leq N.
# Punctaj Restricții
1 12 BB are toate elementele pozitive, N300N \leq 300.
2 12 BB are toate elementele egale și negative, N300N \leq 300.
3 15 Pe fiecare diagonală paralelă cu diagonala secundară elementele din BB sunt egale, N300N \leq 300.
4 13 Elementele de pe chenarul lui BB sunt negative, iar celelalte elemente sunt pozitive, N300N \leq 300.
5 13 Toate elementele din BB sunt egale în valoare absolută (modul), elementele de pe chenar sunt pozitive, iar celelalte elemente sunt negative, N300N \leq 300.
6 16 N300N \leq 300
7 19 Fără restricții suplimentare.

Mai sus prin chenarul lui BB ne referim la elementele care se află pe prima/ultima linie și prima/ultima coloană.

Exemplu

birocratie.in

5
1 2 5 8 2
1 3 -10 2 1
0 9 1 -7 3
-2 3 4 -1 2
3 -4 2 3 1

birocratie.out

42

Explicație

Câștigul maxim este 42, obținut adunând elementele evidențiate în traseul ilustrat mai jos.

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