#include #define MAX 10000 struct mince { int p1, p5, p10, p25; }; int i,j1,j5, j10, j25 ,k, l, n; int pocty[26]; int nej,nn; int main() { int suma, p1, p5, p10, p25; mince m[MAX]; int pom[MAX]; pom[0] = 0; m[0].p1 = 0; m[0].p5 = 0; m[0].p10 = 0; m[0].p25 = 0; pom[1] = 1; m[1].p1 = 1; m[1].p5 = 0; m[1].p10 = 0; m[1].p25 = 0; while(scanf("%d %d %d %d %d", &suma, &p1, &p5, &p10, &p25), suma) { pocty[1] = p1; pocty[5] = p5; pocty[10] = p10; pocty[25] = p25; for ( i=2; i<=suma; i++ ){ if ( i >= 1 && pom[i-1]>-1 && m[i-1].p1 < p1 ){ j1 = pom[i - 1]; } else {j1 = -1;} nej = j1;nn=1; if ( i >= 5 && pom[i-5]>-1 && m[i-5].p5 < p5 ){ j5 = pom[i - 5]; } else {j5 = -1;} if ( j5 > nej ){nej = j5;nn=5;} if ( i >= 10 && pom[i-10]>-1 && m[i-10].p10 < p10 ){ j10=pom[i-10]; } else {j10 = -1;} if ( j10 > nej ){nej=j10;nn=10;} if ( i >= 25 && pom[i-25]>-1 && m[i-25].p25 < p25) {j25 = pom[i-25]; } else {j25=-1;} if ( j25 > nej ){nej=j25; nn=25;} if ( nej == -1 ){ pom[i] = -1; } else { pom[i] = nej + 1; m[i].p1 = m[i-nn].p1; m[i].p5 = m[i-nn].p5; m[i].p10 = m[i-nn].p10; m[i].p25 = m[i-nn].p25; switch( nn ){ case 1: m[i].p1++;break; case 5: m[i].p5++;break; case 10: m[i].p10++;break; case 25: m[i].p25++;break; }} pocty[nn]--; } if ( pom[suma] == -1 ){ printf("Charlie cannot buy coffee.\n"); } else { printf("Throw in %d cents, %d nickels, %d dimes, and %d quarters.\n", m[suma].p1, m[suma].p5, m[suma].p10, m[suma].p25 ); } } return 0; }