Avem la dispoziţie scânduri de înălţimi , , , ..., . Vrem să construim un gard aşezând scândurile una lângă alta într-o ordine întâmplătoare. De exemplu, dacă , putem să construim gardul în moduri:
Pentru orice tip de gard se calculează diferenţele în valoare absolută dintre înălţimile oricăror două scânduri vecine din gard. Suma acestor diferenţe se numeşte gradul de urâţenie al gardului. În exemplul anterior, pentru , se observă că gardurile au în cazuri gradul de urâţenie egal cu şi în cazuri au gradul de urâţenie egal cu .
Cerință
Cunoscând numărul de scânduri, realizaţi un program care:
- calculează gradul maxim de urâţenie pe care îl poate avea un gard de scânduri;
- calculează restul modulo al numărului de garduri cu grad maxim de urâţenie care se pot construi cu cele scânduri;
- determină un gard cu grad maxim de urâţenie format din scânduri, sub forma unei permutări de ordin .
Date de intrare
Fişierul urat.in
conţine pe prima linie numărul natural reprezentând numărul de scânduri.
Date de ieșire
Fişierul urat.out
va conţine trei linii:
- pe prima linie se va scrie un număr natural reprezentând gradul maxim de urâţenie al unui gard format din scânduri;
- pe a doua linie se va scrie un număr natural reprezentând restul modulo al numărului de garduri cu grad maxim de urâţenie care se pot construi folosind cele scânduri;
- pe a treia linie se vor scrie numere naturale, oricare două consecutive separate prin câte un spaţiu, reprezentând, în ordine de la stânga spre dreapta, înălţimile scândurilor dintr-un gard cu grad maxim de urâţenie format cu cele scânduri.
Restricții și precizări
- Pentru prima cerinţă se acordă din punctaj, pentru a doua iar pentru a treia .
Exemplu
urat.in
3
urat.out
3
4
1 3 2
Explicație
Gradul maxim de urâţenie este .
Există tipuri de garduri cu grad maxim de urâţenie dintre cele cazuri posibile — vezi figura de mai sus.
Unul dintre gardurile de urâţenie maximă foloseşte, de la stânga la dreapta, scândurile de înălțimi , , — vezi al doilea gard din figură.