arrows

Time limit: 0.5s Memory limit: 6MB Input: arrows.in Output: arrows.out

“Arrows” este un joc care se joacă pe o tablă dreptunghiulară a cărei suprafață este împărțită în NMN \cdot M celule, aranjate pe NN linii și MM coloane. În fiecare celulă se află o săgeată (sus, jos, stânga sau dreapta), ca în figura de mai jos:

Când este la mutare, un jucător poate alege o poziție de start pe care plasează un jeton, apoi deplasează jetonul la celula învecinată în sensul indicat de săgeată. Deplasarea continuă până când jetonul părăsește tabla de joc, caz în care jucătorul obține un punctaj egal cu numărul de celule parcurse de jetonul său.
Există însă poziții de start denumite favorabile, pentru care jetonul nu va părăsi niciodată tabla de joc. De exemplu, toate pozițiile din figură cu fundal gri sunt favorabile. Jucătorul care alege o poziție de start favorabilă obține un punctaj egal cu numărul de celule distincte vizitate înmulțit cu 10001000.

Scrieți un program care, cunoscând configurația tablei de joc, rezolvă una dintre următoarele cerințe:

  1. determină punctajul pe care îl obține un jucător care plasează jetonul său pe o poziție de start specificată;
  2. determină numărul de celule favorabile de pe tabla de joc;
  3. determină punctajul maxim pe care jucătorul îl poate obține la o mutare, alegând convenabil poziția de start.

Date de intrare

Fișierul de intrare arrows.in conține pe prima linie cerința care trebuie să fie rezolvată (1,21, 2 sau 33). Pe a doua linie se află numerele naturale N MN \ M, care reprezintă numărul de linii și respectiv de coloane de pe tabla de joc. Pe următoarele NN linii se află câte MM numere din mulțimea {1,2,3,41,2,3,4} reprezentând săgețile aflate în celulele de pe tabla de joc (11 semnificând săgeata la dreapta, 22 săgeata în sus, 33 săgeata la stânga și 44 săgeata în jos). Pe ultima linie sunt scrise numerele naturale lin collin \ col, reprezentând linia și coloana pe care se află poziția de start specificată. Valorile scrise pe aceeași linie în fișierul de intrare sunt separate prin spații.

Date de ieșire

Fișierul de ieșire arrows.out va conține o singură linie pe care va fi scris un număr natural reprezentând răspunsul pentru cerința specificată pe prima linie a fișierului de intrare.

Restricții și precizări

  • 1N,M5001 \leq N, M \leq 500;
  • Liniile sunt numerotate de la 11 la NN, iar coloanele de la 11 la MM.
  • Pentru teste valorând 2020 de puncte cerința este 11. Pentru teste valorând 4040 de puncte cerința este 22. Pentru celelalte teste, valorând de asemenea 4040 de puncte, cerința este 33.

Exemplul 1

arrows.in

1
6 5
3 1 1 4 2
1 2 4 3 1
4 2 1 1 4
1 2 3 3 3
3 1 4 4 4
2 2 3 4 2
5 5

arrows.out

2000

Explicație

Exemplul corespunde tablei de joc din figură. Punctajele pentru fiecare poziție sunt:

1 14000 14000 14000 1
15000 14000 14000 14000 1
16000 14000 14000 14000 14000
15000 14000 14000 14000 14000
1 4000 4000 2 2000
2 4000 4000 1 2000

Cerința este 11: punctajul care se obține plecând din poziția de start aflată pe linia 55 și coloana 55 este 20002000.

Exemplul 2

arrows.in

2
6 5
3 1 1 4 2
1 2 4 3 1
4 2 1 1 4
1 2 3 3 3
3 1 4 4 4
2 2 3 4 2
5 5

arrows.out

23

Explicație

Cerința este 22: există 2323 de poziții favorabile.

Exemplul 3

arrows.in

3
6 5
3 1 1 4 2
1 2 4 3 1
4 2 1 1 4
1 2 3 3 3
3 1 4 4 4
2 2 3 4 2
5 5

arrows.out

16000

Explicație

Cerința este 33: punctajul maxim se poate obține plasând jetonul în punctul de start de pe linia 33 și coloana 11.

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