butoi

Time limit: 0.2s Memory limit: 64MB Input: butoi.in Output: butoi.out

Vară, căldură mare. Gigel se joacă în curte udând florile. După ce a terminat, mama lui îi dă o sarcină mai grea. Gigel trebuie să umple un butoi cu apă de rezervă în caz de secetă. Dar nu oricum! El are la dispoziție un șir de găleți de diferite capacități și trebuie să le folosească doar pe acestea pentru umplerea completă a butoiului. O operație constă în umplerea completă a unei o găleți de la sursa de apă și golirea ei în butoi. Desigur, o găleată se poate folosi de mai multe ori. Butoiul are capacitate de VV litri, Gigel are NN găleți de capacități c1,c2,,cNc_1, c_2, \dots, c_N litri, numere întregi și distincte și poate folosi o găleată de cel mult KK ori. Ajutați-l pe Gigel să umple butoiul.

Cerință

Scrieți un program care să rezolve următoarele cerințe:

  1. Determinați câte modalități de umplere a butoiului există;
  2. Determinați o modalitate de umplere a butoiului cu număr minim de operații;
  3. O secvență de exact PP găleți alăturate se numește norocoasă dacă prin efectuarea operației de același număr de ori pentru fiecare dintre ele, vom putea umple complet butoiul. Determinați secvența norocoasă care permite folosirea celor PP găleți de un număr minim de ori pentru umplerea completă a butoiului. Secvența norocoasă se va identifica prin poziția primei găleți folosite. Dacă există mai multe soluții se va afișa cea cu poziția minimă. Gălețile din secvența norocoasă se pot folosi de câte ori este nevoie.

Date de intrare

Fișierul de intrare butoi.in conține pe prima linie un număr natural CC care poate avea valorile 1,21, 2 sau 33 și reprezintă numărul cerinței. Linia a doua conține patru valori naturale V N K PV \ N \ K \ P, separate prin câte un spațiu, reprezentând în ordine capacitatea butoiului, numărul de găleți, numărul maxim de operații care poate fi efectuat cu o găleată, în cazul cerințelor 11 și 22, iar ultimul număr reprezintă lungimea secvenței norocoase căutate la cerința 33. Linia a treia conține NN valori naturale distincte c1,c2,,cNc_1, c_2, \dots, c_N, separate prin câte un spațiu, reprezentând, în ordine, capacitățile celor NN găleți din șir.

Date de ieșire

Fișierul de ieșire butoi.out va conține pentru cerința 11, pe prima linie, un întreg reprezentând numărul de modalități de a umple butoiul. Pentru cerința 22 prima linie va conține NN valori naturale separate prin câte un spațiu, reprezentând numărul de utilizări a fiecărei găleți iar pentru cerința 33 prima linie va conține un număr natural reprezentând poziția din șir a primei găleți din secvența norocoasă determinată.

Restricții și precizări

  • 5V360 0005 \leq V \leq 360 \ 000;
  • Pentru cerințele 11 și 22 restricțiile sunt: 1N91 \leq N \leq 9; 1ci8 0001 \leq c_i \leq 8 \ 000; și 1K51 \leq K \leq 5;
  • Pentru cerința 33 restricțiile sunt: 3N100 0003 \leq N \leq 100 \ 000; 1ci200 0001 \leq c_i \leq 200 \ 000; 3P10 0003 \leq P \leq 10 \ 000; și PNP \leq N
  • Pentru cerința 33 capacitățile c1,c2,,cNc_1, c_2, \dots, c_N ale găleților nu sunt neapărat distincte
  • Pentru rezolvarea corectă a primei cerințe se obțin 3030 de puncte, pentru rezolvarea corectă a celei de a doua cerințe se obțin 4040 de puncte, iar pentru rezolvarea corectă a celei de a treia cerințe se obțin 3030 de puncte.

Exemplul 1

butoi.in

1
90 7 1 2
30 56 70 34 60 15 5

butoi.out

3

Explicație

Cerința este 11. Există 33 modalități de a umple butoiul folosind cel mult o dată fiecare găleată, deoarece K=1K = 1. Acestea sunt 30+6030 + 60, 56+3456 + 34 și 70+15+570 + 15 + 5.

Exemplul 2

butoi.in

1
2020 6 5 3
17 42 200 101 51 171

butoi.out

19

Explicație

Cerința este 11. Există 1919 modalități de a umple butoiul.

Exemplul 3

butoi.in

2
2020 6 5 3
17 42 200 101 51 171

butoi.out

0 0 5 3 4 3

Explicație

Cerința este 22. Numărul minim de operații este 1515. Gălețile au fost folosite astfel: 017+042+5200+3101+451+3171=0+0+1000+303+204+513=20200 \cdot 17 + 0 \cdot 42 + 5 \cdot 200 + 3 \cdot 101 + 4 \cdot 51 + 3 \cdot 171 = 0 + 0 + 1000 + 303 + 204 + 513 = 2020.

Exemplul 4

butoi.in

3
120 7 1 3
90 12 20 8 41 80 11

butoi.out

2

Explicație

Cerința este 33. Secvența norocoasă de lungime 33 determinată începe la poziția 22. Prin folosirea de 33 ori a fiecărei găleți din secvență butoiul se umple.

Log in or sign up to be able to send submissions!