Fie un tablou bidimensional (matrice), format din linii şi coloane, având elemente din mulţimea . Liniile şi coloanele acestui tablou sunt numerotate de la la . Un drum de lungime în acest tablou este un şir de perechi , cu de la de la , cu următoarele proprietăţi:
- și sunt valori numere naturale din intervalul , pentru de la la ;
- şi sau şi ), pentru de la la .
Altfel spus, un drum este o succesiune de poziții în tablou astfel încât două poziții consecutive sunt alăturate fie sus-jos, fie stânga-dreapta. Numim valoare a unui drum șirul de valori , cu de la la .
Prin anagramă a unui şir de valori vom înţelege orice rearanjare a elementelor acestuia. De exemplu, dacă şirul iniţial conţine elementele , atunci şirurile , , , sunt anagrame ale acestuia.
Cerinţă
Cunoscând dimensiunea a tabloului, elementele tabloului și un șir , compus din elemente din mulţimea , determinaţi un drum în tabloul , având ca valoare o anagramă a lui , dacă acest drum există.
Date de intrare
Datele de intrare se citesc din fişierul siruri.in
, care are următoarea structură:
- pe prima linie se află două numere naturale și , separate printr-un singur spaţiu, reprezentând dimensiunea tabloului, respectiv lungimea șirului ;
- pe fiecare din următoarele linii se află câte valori din mulţimea , separate prin câte un spațiu, reprezentând valorile tabloului ;
- pe linia se află numere, din mulţimea , separate prin câte un spațiu, reprezentând valorile șirului .
Date de ieșire
Datele de ieşire se vor scrie în fişierul siruri.out
, astfel:
- Dacă nu există niciun drum care satisface cerința problemei, atunci se va scrie valoarea ;
- Dacă există un astfel de drum, atunci se vor scrie, pe linii separate, perechi de valori , din mulţimea , separate printr-un singur spaţiu, reprezentând drumul determinat.
Restricții și precizări
- Elementele tabloului și ale șirului sunt elemente din mulţimea
- Pentru teste în valoare de de puncte, şirul se găseşte pe o linie sau pe o coloană a matricei, aşa cum este dat în fişierul de intrare sau în ordine inversă;
- Soluția nu este unică, se acceptă orice soluție
Exemplul 1
siruri.in
3 10
0 0 0
0 1 1
1 0 1
1 1 1 0 1 1 1 0 1 1
siruri.out
2 2
2 3
2 2
2 1
2 2
2 3
2 2
2 3
3 3
3 2
Explicație
Valoarea obţinută pentru drumul din fişierul de ieşire este şi reprezintă o anagramă a şirului dat.
Exemplul 2
siruri.in
4 3
1 0 0 0
0 0 1 0
1 0 0 0
1 0 0 0
1 1 0
siruri.out
4 1
3 1
2 1
Explicație
Şirul se găseşte pe coloana a matricei.
Exemplul 3
siruri.in
2 4
0 0
0 0
1 0 1 0
siruri.out
-1
Explicație
În tablou nu există valoarea , deci nu se poate obține un drum a cărui valoare să conțină .