Marele Maestru dorește să construiască o tablă de șah specială, cu linii și coloane. O acoperire a acestei table este un mod de a aranja pătrate mai mici (nu neapărat toate de aceeași mărime), astfel încât pătratele să nu se suprapună între ele, dar să acopere perfect întreaga suprafață a tablei de șah. Laturile pătratelor pot fi orice număr întreg între și .
Parcurgând celulele matricei asociate tablei de la stânga la dreapta și de sus în jos (mai întâi pe linii, apoi pe coloane), scriem într-o listă latura pătratelor pe care le parcurgem doar prima oară când le întâlnim. Această listă reprezintă transcrierea acoperirii.
De exemplu, să considerăm următoarea acoperire:

Aici am folosit un pătrat (A), șase pătrate (B, C, D, E, F, G) și patru pătrate (H, I, J, K). Parcurgând tabla, vom obține lista de transcriere:
[6, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1].
Dacă, de exemplu, ne uităm la altă operă a Maestrului:

În acest caz, pătratele sunt deja etichetate în ordinea primei lor apariții la parcurgerea tablei. Prin urmare, transcrierea completă a acoperirii este
[1, 1, 2, 2, 2, 1, 1, 3, 3, 2, 2, 3, 3, 2].
Generăm toate listele care corespund unor acoperiri valide ale tablei și le sortăm lexicografic.
Se dau cerințe care pot fi de două tipuri:
- Tipul 1. Dată fiind o listă generată de o acoperire validă, să se determine a câta este această listă ca indice în ordinea lexicografică a tuturor listelor valide (cu indexare de la 1).
- Tipul 2. Dat fiind un indice , să se determine lista corespunzătoare acoperirii aflate pe poziția în ordinea lexicografică (cu indexare tot de la 1).
Date de intrare
Pe prima linie se va afla un singur număr întreg , reprezentând numărul de cerințe.
Pe următoarele linii se vor afla cerințele, având unul dintre următoarele două formate:
- : o cerință de tipul 2. Primul număr este , urmat de (lungimea listei), iar apoi de cele elemente ale listei.
- : o cerință de tipul 2. Primul număr este , urmat de indicele .
Date de ieșire
Se vor afișa linii, reprezentând răspunsurile pentru fiecare cerință, în ordinea din fișierul de intrare:
- Pentru o cerință de tipul 1, se va afișa un singur număr întreg , reprezentând indicele listei în ordinea lexicografică.
- Pentru o cerință de tipul 2, se va afișa lungimea listei , urmată de cele elemente ale listei separate prin câte un spațiu.
Restricții
- Pentru cerințele de tip 1 se garantează că lista dată provine dintr-o acoperire validă.
- Pentru cerințele de tip 2 se garantează că există cel puțin acoperiri valide.
- Ordinea lexicografică: O listă de lungime este strict mai mică lexicografic decât o listă de lungime dacă există o poziție astfel încât primele elemente sunt identice, iar . Dacă nu există o astfel de poziție, dar și elementele coincid până la lungimea , se consideră de asemenea că este mai mică lexicografic decât .
- Deoarece trebuie citite multe numere, vă recomandăm folosirea
std::ios_base::sync_with_stdio(false); std::cin.tie(0);ca primă linie în funcțiamain(), pentru a face citirea mai rapidă
| # | Scor | Restricții |
|---|---|---|
| 1 | 16 | (inclusiv indicii listelor de la cerințele de tip ) |
| 2 | 19 | și toate cerințele sunt de tipul 1 |
| 3 | 28 | și toate cerințele sunt de tipul 2 |
| 4 | 23 | |
| 5 | 14 | Fără alte restricții |
Exemplu
stdin
2
2 2
1 64 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
stdout
61 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1
1
Explicație
Pentru prima cerință, ni se cere lista corespunzătoare acoperirii aflate pe poziția în ordinea lexicografică.
Prima acoperire posibilă (cea mai mică lexicografic, de pe poziția ) este formată exclusiv din 64 de pătrate .
Următoarea acoperire în ordine lexicografică este cea în care avem un singur pătrat , iar pentru a păstra elementele de cât mai mult timp la începutul listei, acest pătrat trebuie plasat cât mai târziu posibil pe tablă. Această poziție optimă este chiar colțul din dreapta-jos (ocupând intersecția ultimelor două linii cu ultimele două coloane).
Când parcurgem și transcriem această tablă:
- Trecem prin primele 6 linii complet și prin primele 6 celule din linia 7: adăugăm la listă 54 de valori de .
- Ajungem la pătratul de pe care abia acum îl întâlnim: adăugăm la listă o valoare de 2. (Următoarea celulă din rând este deja acoperită de acest pătrat, deci o sărim).
- Trecem pe ultima linie. Primele 6 celule sunt libere: adăugăm încă 6 valori de . (Ultimele două celule sunt deja acoperite de pătratul ).
Astfel, obținem o listă de lungime , formată din de , urmată de un , apoi de încă șase valori de .
Pentru a doua cerință, se dă lista formată din de elemente egale cu și se cere poziția sa. Așa cum am dedus și anterior, aceasta este absolut prima acoperire din ordinea lexicografică, așadar răspunsul este .