card

Time limit: 0.4s Memory limit: 32MB Input: card.in Output: card.outPoints by default: 10p

În orașul Imios se află nn galerii ce au locații interesante de vizitat (muzee, expoziții, castele), notate de la 11 la nn. O galerie conține mm locații, notate de la 11 la mm. Fiecare locație are atribuit un număr de puncte, unic ca valoare. Orașul are multe birouri de informare turistică, de unde turiștii pot cumpăra un card de o zi pentru vizitarea locațiilor. Pe fiecare card se înregistrează punctul de plecare, notat prin 22 numere: numărul galeriei si cel al locației, din care se pot vizita cel mult kk locații din oraș, diferite de punctul de plecare. Cardul are înregistrat un număr de puncte, ce vor fi utilizate în locațiile vizitate. Alegând o locație ce are xx puncte, turistul poate selecta 44 categorii de vizitare, ce modifică punctele de pe card astfel:

  • categoria rapidă: numărul de puncte de pe card se reduce cu dublul lui xx
  • categoria extinsă: numărul de puncte de pe card se reduce cu x2\frac{x}{2} puncte
  • categoria medie: la numărul de puncte de pe card se adaugă xx puncte
  • categoria clasică: din numărul de puncte de pe card se scad xx puncte.

Alexandru a cumpărat un card și dorește să viziteze cât mai puține locații și să utilizeze toate punctele de pe card. Împreună cu cardul, a primit o hartă electronică a locațiilor din oras, codificată printr-o matrice hh, având nn linii și mm coloane, pe care este înregistrat numărul de puncte al fiecarei locații. Pe hartă, punctul de plecare, înregistrat pe card, conține numărul de puncte disponibile pe card pentru vizitare. A fost informat că dupa vizitarea unei locații, se poate deplasa numai într-o locație vecină cu aceasta în cele 88 direcții (N, NE, E, SE, S, SV, V, NV). Fiecare locație poate fi vizitată o singură dată, pe baza cardului.

Alexandru a decis că dacă are mai multe variante posibile de vizitare, din care să aleagă, va opta pentru acea variantă în care ultima locație are cel mai mic număr de puncte. Dacă există mai multe variante de vizitare care au același număr minim de puncte pentru ultima locație, va opta pentru varianta în care prima locație are cel mai mic număr de puncte. Două variante de vizitare diferă prin: locațiile lor, ordinea locațiilor vizitate și categorii de vizitare alese pentru locații.

Cerinţă

Să se scrie un program care obține numărul de variante posibile de vizitare a unor locații din oraș, care conțin cât mai puține locații vizitate din punctul de plecare, ce asigură utilizarea tuturor punctelor de pe card și lista punctelor din locațiile vizitate, în ordinea vizitării lor, pentru varianta pe care Alexandru o alege.

Date de intrare

Fişierul de intrare card.in conţine pe prima linie cinci numere naturale separate prin spaţiu n,m,x,y,kn, m ,x, y, k cu semnificația următoare: nn este numărul de linii și m este numărul de coloane din matricea hh, valorile xx și yy reprezintă punctul de plecare înregistrat pe cardul lui Alexandu (linia xx și coloana yy pe hartă), kk reprezintă numărul maxim de locații ce pot fi vizitate din punctul de plecare, pe baza cardului. Pe fiecare dintre următoarele nn linii se află câte mm numere naturale separate prin spaţiu ce reprezintă punctele atribuite locațiilor. Astfel linia ii va descrie, în ordine, punctele atribuite celor mm locații din galeria ii.

Date de ieşire

Fişierul de ieşire card.out va conţine pe prima linie un număr natural ce reprezintă numărul de variante posibile de vizitare a unor locații din oraș ce-i permite lui Alexandru utilizarea tuturor punctelor de pe card, în condițiile pe care le-a stabilit.

A doua linie din fișier va conține un șir de numere separate prin câte un spatiu, ce reprezintă lista punctelor din locațiile vizitate în ordinea vizitării lor, pentru varianta pe care Alexandru o alege.

Restricții și precizări

  • 2n,m302 \leq n,m \leq 30
  • Liniile și coloanele matricii h sunt numerotate de la 11 și matricea hh are elemente distincte
  • 0<hi,j1050 < h_{i,j} \leq 10^5, pentru 1in1 \leq i \leq n, 1jm1 \leq j \leq m
  • 1k61 \leq k \leq 6, 1xn1 \leq x \leq n, 1ym1 \leq y \leq m
  • Pentru datele de test, există o singură variantă de vizitare ce poate fi selectată în condițiile problemei, dintre variantele posibile de vizitare

Exemplu

card.in

3 4 2 2 3
54 9 11 14
20 34 2 8
7 27 10 29

card.out

10
20 7

Explicație

Alexandru are pe card 3434 de puncte. O variantă de vizitare cu 33 locații are punctele (9,11,14)(9,11,14) și verifică relația 3491114=034-9-11-14=0. El alege din 1010 variante posibile de vizitare, care îi consumă toate punctele de pe card: (10,29),(27,20),(27,7),(7,27),(10,29),(7,20),(20,7),(20,27),(20,54),(54,20)(10,29), (27,20), (27,7), (7,27), (10,29), (7,20), (20,7), (20,27),(20,54), (54,20). Dintre acestea, el va vizita varianta cu punctele (20,7)(20,7) ce verifică toate condițiile lui. Varianta (10,29)(10,29) se selectează de 22 ori prin categorii de vizitare diferite: 3410229=034-\frac{10}{2}-29=0 și 34102292=034-10 \cdot 2-\frac{29}{2}=0. Varianta (54,20)(54,20): 3454+20=034-54+20=0

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