Considerând un număr natural, vom numi permutare de mărime o aranjare într-o ordine oarecare a elementelor mulțimii . Ana găsește scris pe o foaie de hârtie, un șir de numere naturale
Plecând de la acest șir, Ana numește secvență a lui , un subșir de numere care apar pe poziții consecutive în șirul inițial. De exemplu, șirul conține secvența , secvența , dar nu conține secvența .
Anei îi vine ideea să încerce să verifice dacă șirul de numere poate fi împărțit în secvențe care reprezintă permutări de diferite mărimi.
De exemplu, dacă Ana găsește șirul , atunci ea îl poate împărți în două secvențe de permutări astfel: secvența respectiv secvența .
Dacă Ana găsește șirul atunci nu va putea obține o împărțire în secvențe de permutări.
Cerinţă
Realizați un program care citește un șir de numere naturale și rezolvă următoarea cerință:
- determină o împărțire a acestuia în secvențe de permutări. Dacă există mai multe soluții se va afișa soluția minim lexicografică.
Dacă șirul poate fi împărțit în secvențe de permutări, pentru fiecare număr din șir, în ordinea , se va afișa numărul permutării din care face parte. Numerotarea permutărilor se va face consecutiv începând cu numărul .
Date de intrare
Fișierul de intrare perm.in
conţine pe prima linie numărul natural , iar pe a doua linie, un șir format din numere naturale separate prin câte un spațiu.
Date de ieşire
Fişierul de ieşire perm.out
conține pe prima linie mesajul NU
dacă șirul nu se poate împărți în secvențe de permutări. Dacă împărțirea se poate efectua atunci pe prima linie se va scrie numărul secvențelor de permutări obținut, iar pe a doua linie un șir de numere reprezentând împărțirea minim lexicografică determinată. Numerele pe linia a doua vor fi separate prin câte un spațiu.
Restricţii și precizări
- Pentru două șiruri de numere și spunem ca șirul este mai mic lexicografic decât șirul , dacă există un indice , cu , astfel încât și
Exemplul 1
perm.in
10
2 1 3 4 1 1 2 3 4 5
perm.out
3
1 1 1 1 2 3 3 3 3 3
Explicație
Prima secvență care reprezintă o permutare e formată din primele elemente, a doua din elementul de pe poziția , iar a treia din ultimele elemente
Exemplul 2
perm.in
4
1 2 2 3
perm.out
NU
Explicație
Nu se poate împărți șirul în secvențe formate din permutări