#include <stdio.h> #include <stdlib.h> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(int argc, char *argv[]) { int n,m; while(scanf("%d%d",&n,&m)!=EOF){ int w[5500],v[5500]; int dp[6500]={0}; int size=0; while(n--){ int tw,tv,k,c=1; scanf("%d%d%d",&tw,&tv,&k); while(k-c>0){ k-=c; w[size]=c*tw; v[size++]=c*tv; c*=2; } w[size]=k*tw; v[size++]=k*tv; } int i,j; for(i=0;i<size;i++){ for(j=m;j>=w[i];j--){ dp[j]=dp[j]>(dp[j-w[i]]+v[i])? dp[j]:(dp[j-w[i]]+v[i]); } } printf("%d\n",dp[m]); } return 0; } /************************************************************** Problem: 2077 User: admin Language: C Result: Accepted Time:67 ms Memory:1144 kb ****************************************************************/