Ion şi-a construit o vilă pe frumosul vârf al unui munte. Acum proiectează o scară specială, pe care va urca de la şosea până la vilă. Diferenţa de nivel dintre şosea şi vilă este (deci aceasta trebuie să fie înălţimea totală a scării). Scara va avea trepte, toate de aceeaşi lăţime, dar de înălţimi distincte două câte două.
Ion a sesizat că efortul pe care îl depune pentru a urca o treaptă este egal cu înălţimea treptei. Dar dacă el urcă trepte deodată, efortul depus este egal cu media aritmetică a înălţimilor acestor trepte pe care le urcă deodată + un efort de valoare constantă (necesar pentru a-şi lua avânt).
Fiind un tip atletic, Ion poate urca mai multe trepte deodată, dar suma înălţimilor treptelor urcate deodată nu trebuie să depăşească o valoare maximă .
Cerinţă
Scrieţi un program care să determine efortul minim necesar pentru a urca pe o scară construită conform restricţiilor problemei, precum şi o modalitate de a construi scara care va fi urcată cu efort minim.
Date de intrare
Fişierul de intrare scara.in
va conţine pe prima linie numere naturale separate prin câte un spaţiu (cu semnificaţia din enunţ).
Date de ieșire
Fişierul de ieşire scara.out
va conţine
- pe prima linie va fi scris efortul minim necesar (cu zecimale cu rotunjire);
- pe cea de a doua linie vor fi scrise numere naturale nenule care reprezintă înălţimile celor trepte ale scării (în ordinea de la şosea către vilă), separate prin câte un spaţiu.
Restricții și precizări
- Pentru datele de test, problema are întodeauna soluţie.
- Dacă există mai multe soluţii (modalităţi de a construi scara astfel încât să obţineţi efortul minim dorit), veţi afişa prima soluţie în ordine lexicografică.
- Spunem că vectorul precedă în ordine lexicografică vectorul dacă există astfel încât , pentru orice şi .
- Dacă a doua zecimală a efortului minim este , sau chiar ambele zecimale sunt nu este necesar să le afişaţi. Deci în exemplu s-ar fi putut scrie efortul minim sau .
- Se acordă din punctaj pentru prima cerinţă (efortul minim).
- Dacă efortul minim este corect şi se afişează şi o soluţie corectă (care respectă restricţiile problemei şi corespunde efortului minim), dar această soluţie nu este prima din punct de vedere lexicografic, se obţine din punctaj. Pentru rezolvarea corectă şi completă a ambelor cerinţe se obţine din punctaj.
Exemplu
scara.in
10 4 5 2
scara.out
9.00
1 4 2 3