Sunteți pe pagina 1din 1

Centrul de Pregătire pentru Performanță în Informatică

Concurs de antrenament
1-3 decembrie 2022

KDrum
Se consideră un tablou bidimensional cu n linii, n coloane. Elementele tabloului sunt numere naturale
distincte cu excepția valorilor 0.

Trebuie să mergeţi pe un drum de lungime minimă de la punctul de coordonate (1,1) la punctul de


coordonate (n,n). Un drum este format dintr-o succesiune de elemente nenule, aflate in poziții
consecutive pe aceeași linie sau coloană. Lungimea unui drum minim este dată de numărul de
puncte prin care se trece. Pot fi mai multe drumuri de lungime minimă. Două drumuri sunt distincte
dacă au cel puţin un punct diferit. Fiecare astfel de drum minim are asociat şirul de valori
reprezentate de valorile punctelor prin care trece drumul.
Trebuie să determinaţi al K-lea şir din punct de vedere lexicografic dintre toate şirurile asociate
drumurilor de lungime minima.

Date de intrare
Fişierul de intrare kdrum.in conţine pe prima linie cele două numere naturale N şi K separate
printr-un singur spaţiu. Pe următoarele N linii se găsesc, separate prin câte un spaţiu, câte N numere
naturale reprezentând valorile tabloului bidimensional.

Date de ieşire
Fişierul kdrum.out va conţine pe prima linie un număr P reprezentând lungimea minimă a unui drum
de (1,1) la (n,n). Pe linia a doua, separate prin câte un spaţiu, se găsesc P numere naturale nenule,
care reprezintă al K-lea şir din punct de vedere lexicografic asociat unui drum de lungime minimă.

Restricţii
1 ≤ N ≤ 100
Numărul total de drumuri de lungime minimă este mai mic de 2 miliarde şi este garantat că există cel
puţin un drum de la punctul de start la cel de ieşire.
Toate valorile strict pozitive din matrice sunt distincte două câte două
1 ≤ K ≤ numărul de drumuri de lungime minimă

Exemplu
kdrum.in kdrum.out Explicaţii
4 2 7 Există 4 drumuri de lungime minima 7. Ele sunt (în ordinea
5 3 4 0 5 1 6 10 9 11 8 lexicografică):
1 0 2 0 5 1 6 10 9 7 8
6 10 9 11 5 1 6 10 9 11 8
0 0 7 8 5 3 4 2 9 7 8
5 3 4 2 9 11 8
Al doilea în ordine lexicografică este: 5 1 6 10 9 11 8

S-ar putea să vă placă și