Problem D
Gourmeten
Languages
en
sv
Den franska gourmeten Frank är en väl respekterad gourmet; hans yrke är att gå runt till olika restauranger, äta av deras mat och ge sitt omdöme om restaurangen. Men han bär på en hemlighet: han är egentligen bara intresserad av att äta så mycket som möjligt och i vilken ordning som helst!
Frank förstår dock att en äkta gourmet inte kan äta hur som helst, t.ex. börja med sin dessert och avsluta med en sallad. Därför ber han om din hjälp att ta fram en lista med alla olika sätt att ordna maträtterna under en bjudning, så han kan välja ut den ordning som är finast.
På bjudningen har Frank $M$ minuter på sig att äta. Restaurangen bjuder på $N$ olika rätter som han kan äta hur många portioner som helst av. Varje rätt $i$ tar ett visst givet antal minuter $T_ i$ att äta. Frank vill äta kontinuerligt under alla de $M$ minuter han har på sig, och han vill hinna äta klart alla rätter han påbörjat. Han vill aldrig påbörja en ny rätt innan han ätit färdigt den förra. Din uppgift är att skriva ett program som räknar ut på hur många olika sätt han kan lägga upp middagen, givet dessa restriktioner.
Indata
På första raden står ett heltal $M$, antalet minuter, där $1 \le M \le 1,000$.
På andra raden står ett heltal $N$, antalet rätter, där $1 \le N \le 30$.
Därefter följer $N$ rader med ett heltal $T_ i$ på varje rad, tiden det tar att äta varje rätt, där $1 \le T_ i \le 200$.
Utdata
Programmet ska skriva ut antalet möjliga sätt Frank kan äta under exakt $M$ minuter. Svaret kommer alltid understiga $2$ miljarder.
Poängsättning
Din lösning kommer att testas på en mängd testfallsgrupper. För att få poäng för en grupp så måste du klara alla testfall i gruppen.
Grupp |
Poängvärde |
Gränser |
$1$ |
$60$ |
Svaret kommer vara högst $2$ miljoner ($2\, 000\, 000$). |
$2$ |
$40$ |
Inga ytterligare begränsningar |
Förklaring till exempel 1
Frank ska alltså äta under $10$ minuter och han har $2$ rätter att välja på, t.ex. sallad (tar $3$ minuter att äta), och paj ($7$ minuter). Det finns bara två sätt att äta på: först paj sen sallad eller tvärtom. Äter han bara sallad kommer han antingen att bli klar för snabbt ($3 \text { portioner} = 9 \text { minuter}$) eller för sent ($4 \text { portioner} = 12 \text { minuter}$).
Sample Input 1 | Sample Output 1 |
---|---|
10 2 7 3 |
2 |
Sample Input 2 | Sample Output 2 |
---|---|
12 6 1 3 3 5 6 12 |
498 |