Problem Description
Input
Output
Example Input
200.00 3
2 A:23.50 B:100.00
1 C:650.00
3 A:59.99 A:120.00 X:10.00
1200.00 2
2 B:600.00 A:400.00
1 C:200.50
1200.50 3
2 B:600.00 A:400.00
1 C:200.50
1 A:100.00
100.00 0
Example Output
123.50
1000.00
1200.50
#include<stdio.h> int sum1[30]; int dp[3000000];
double max (double a, double b) { return (a>b?a:b); }
int main() { double q,a,sum; int i,j,n,m,top,money; char str; while(scanf("%lf%d",&q,&n),n) { top=-1; memset(dp,0,sizeof(dp)); money=q*100; for(i=0;i<n;i++) { scanf("%d",&m); getchar(); top++; sum=0; for(j=0;j<m;j++) { str=getchar(); scanf(":%lf",&a); getchar(); if(str=='A'||str=='B'||str=='C') { sum+=a; } else { top--; break; } if(j==m-1) { sum1[top]=sum*100; } } } for(i=0;i<=top;i++) { for(j=money;j>=sum1[i];j--) { dp[j]=max(dp[j],dp[j-sum1[i]]+sum1[i]); } } q=dp[money]/(100.0); printf("%.2lf\n",q); } return 0; }