Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 27649 | Accepted: 9845 |
Descriptionios
Inputapp
Outputless
Sample Inputide
735 3 4 125 6 5 3 350 633 4 500 30 6 100 1 5 0 1 735 0 0 3 10 100 10 50 10 10
Sample Outputspa
735 630 0 0
Hintcode
1 /*====================================================================== 2 * Author : kevin 3 * Filename : CashMachine.cpp 4 * Creat time : 2014-09-11 20:54 5 * Description : 6 ========================================================================*/ 7 #include <iostream> 8 #include <algorithm> 9 #include <cstdio> 10 #include <cstring> 11 #include <queue> 12 #include <cmath> 13 #define clr(a,b) memset(a,b,sizeof(a)) 14 #define M 20000 15 using namespace std; 16 int cash,n,num[15],h[15],w[M]; 17 int dp[100005]; 18 int main(int argc,char *argv[]) 19 { 20 while(scanf("%d%d",&cash,&n) != EOF){ 21 clr(w,0); 22 clr(h,0); 23 clr(dp,0); 24 clr(num,0); 25 for(int i = 0; i < n; i++){ 26 scanf("%d%d",&num[i],&h[i]); 27 } 28 int cnt = 0; 29 for(int i = 0; i < n; i++){ 30 int cc = num[i]; 31 for(int k = 1; k <= cc; k <<= 1){ 32 w[cnt++] = k*h[i]; 33 cc -= k; 34 } 35 if(cc > 0){ 36 w[cnt++] = cc*h[i]; 37 } 38 } 39 for(int i = 0; i < cnt; i++){ 40 for(int j = cash; j >= w[i]; j--){ 41 dp[j] = max(dp[j],dp[j-w[i]]+w[i]); 42 } 43 } 44 printf("%d\n",dp[cash]); 45 } 46 return 0; 47 }