Fișierul intrare/ieșire | decodare.in, decodare.out | Sursă | ad-hoc |
---|---|---|---|
Autor | Cristian Frâncu | Victor Manz | Adăugată de | Cătălin Frâncu • Catalin.Francu |
Timp de execuție pe test | 0.1 sec | Limită de memorie | 10000 KB |
Scorul tău | N/A | Dificultate |
Vezi soluțiile trimise | Statistici
Decodare
Fie trei numere naturale N, K și D. Considerăm toate șirurile descrescătoare de lungime K formate cu numere din mulțimea {1, 2, ..., N} pentru care diferența între oricare doi termeni consecutivi este cel puțin D. Ordonăm aceste șiruri în ordine lexicografică și codificăm fiecare șir prin numărul lui de ordine, începând cu 1. Dându-se M coduri C1, C2, ..., CM, să se decodifice și să se tipărească șirurile corespunzătoare.
Date de intrare
Fișierul de intrare decodare.in conține pe prima linie numerele N, K, D și M, în această ordine. Pe linia a doua se află cele M coduri, separate prin spații.
Date de ieșire
În fișierul de ieșire decodare.out se vor scrie cele M șiruri corespunzătoare, în ordinea dată de codurile de intrare. Fiecare șir va fi scris pe o linie separată, cu elementele separate prin spații.
Restricții
- 1 ≤ K ≤ N ≤ 1.000
- (K – 1) * D < N (se poate întotdeauna genera cel puțin un șir cu proprietățile date)
- 1 ≤ M ≤ 10
- 1 ≤ Ci ≤ TOTAL, unde 1 ≤ i ≤ M iar TOTAL este numărul total de șiruri cu proprietățile date
- 1 ≤ Ci ≤ 1015
Exemplu
decodare.in | decodare.out | explicație |
---|---|---|
7 3 2 3 1 6 10 |
5 3 1 7 4 1 7 5 3 |
Există 10 șiruri cu proprietățile date, respectiv: 5 3 1 6 3 1 6 4 1 6 4 2 7 3 1 7 4 1 7 4 2 7 5 1 7 5 2 7 5 3 |