Fişierul intrare/ieşire: | mostenire.in, mostenire.out | Sursă | Algoritmiada 2015 Runda Finala |
Autor | Eugenie Daniel Posdarascu | Adăugată de | |
Timp execuţie pe test | 1 sec | Limită de memorie | 65536 kbytes |
Scorul tău | N/A | Dificultate | N/A |
Vezi solutiile trimise | Statistici
Mostenire
Bunicul si Bunica au intampinat o problema fara precedent: problema mostenirii. Cei 2 au K mere foarte delicioase care trebuie distribuite copiilor si nepotilor lor. Dupa multe zile de chin, Bunicul a realizat in sfasit faptul ca el are N copii (nu mai stia exact) si fiecare copil i are Vi copii. Dupa o cearta puternica cu Bunica, cele 2 personaje au hotarat sa imparta cele K mere la cei N copii, urmand ca la randul lor copiii sa imparta merele primite copiilor lor (nepotii bunicului). Deoarece Bunicul si Bunica sunt batrani, ei va roaga pe voi sa aranjati impartirea merelor astfel incat diferenta maxima de mere pe care le primesc oricare 2 copii si oricare 2 nepoti sa fie cat mai mica. Mai exact, max( CopilMax - CopilMin, NepotMax - NepotMin) sa fie minim. CopilMax si CopilMin reprezinta numarul maxim respectiv minim de mere obtinute de un copil. NepotMax si NepotMin reprezinta numarul maxim respectiv minim de mere obtinute de un nepot.
Date de intrare
Fişierul de intrare mostenire.in va contine pe prima linie 2 numere naturale N si K. Pe urmatoarea linie vor fi N numere naturale: elementul i reprezentand valoarea Vi. Elementele de pe linia 2 sunt date in ordine crescatoare.
Date de ieşire
Fişierul de ieşire mostenire.out va contine pe prima linie un numar natural reprezentand diferenta minima ceruta (acel max( CopilMax - CopilMin, NepotMax - NepotMin)). Pe urmatoarea linie vor fi N numere naturale, elementul i reprezentand numarul de mere pe care i le atribuiti copilului i. Orice solutie corecta va fi punctata.
Restricţii
- 1 ≤ N ≤ 1.000.000
- 1 ≤ K ≤ 1018
- Suma V-urilor este ≤ 2.000.000.000
- Orice V este mai mare sau egal cu 1, altfel spus orice copil are la randul lui copii
- Pentru 30% din punctaj N ≤ 50 si K ≤ 3000
- Aveti mare mare grija la overflow
- Copiii distribuie toate merele primite la nepoti astfel incat sa minimizeze diferenta din cerinta
- Daca dati corect numai diferenta minima insa nu reconstituiti corect primiti 20% din punctaj. Trebuie neaparat insa ca reconstituirea sa fie una posibila, adica suma celor N numere din fisierul de iesire sa dea K
Exemplu
mostenire.in | mostenire.out |
---|---|
2 100 1 2 | 15 43 57 |
4 32 1 1 1 2 | 3 7 7 8 10 |