Fie un număr natural şi un şir indexat de la , cu elemente, ce constituie o permutare a numerelor , , , . . . , . Dintr-o poziţie , cu , ne putem deplasa în poziţia:
- , dacă nu se divide cu
- , dacă nu se divide cu
- , dacă
- , dacă
Un element se numeşte start dacă toate elementele în care ne putem deplasa din poziţia au valoarea mai mare decât . Un drum este o succesiune de elemente, , cu , astfel încât , cu proprietatea că elementul este start şi că ne putem deplasa din poziţia în , din în ,..., din în .
Cerință
Să se afişeze un şir astfel încât numărul drumurilor să fie cât mai mic (şi să nu depăşească ), precum şi numărul drumurilor din şirul afişat.
Date de intrare
Fişierul de intrare drumuri.in
conține pe prima linie numărul natural .
Date de ieșire
Fişierul de ieşire drumuri.out
va conține pe prima linie numere naturale distincte cuprinse între și , separate prin câte un spațiu, reprezentând elementele şirului . Pe a doua linie va fi scris numărul drumurilor din şirul scris pe prima linie.
Restricții și precizări
- Numărul drumurilor din şirul , notat , trebuie să fie mai mic decât .
- Dacă numărul drumurilor este corect determinat pentru şirul afişat, se acordă din punctaj.
- În plus, se acordă din punctaj, unde este numărul minim de drumuri care se poate obţine pentru o permutare a şirului , , , . . . , , dacă studiem toate permutările posibile.
# | Punctaj | Restricții |
---|---|---|
1 | 45 | |
2 | 36 | |
3 | 19 | Fără restricții suplimentare |
Exemplul 1
drumuri.in
2
drumuri.out
1 2 3 4
5
Explicație
Pentru primul exemplu drumurile sunt , , , , , iar cum este numărul minim de drumuri pentru toate permutările şirului , , , , se vor acorda de puncte.
Exemplul 2
drumuri.in
2
drumuri.out
1 3 4 2
6
Explicație
Pentru al doilea exemplu drumurile sunt , , , , , şi se vor acorda puncte.
Exemplul 3
drumuri.in
3
drumuri.out
7 6 9 1 3 5 4 8 2
15
Explicație
Pentru al treilea exemplu drumurile sunt , , , , , , , , , , , , , , şi se vor acorda puncte.