#include<bits/stdc++.h> using namespace std; int a,b,c,cnt=1,maxw,n; int dp[100005]; int w[100005],v[100005]; int max(int a,int b){ return a>b?a:b; } int main(){ scanf("%d%d",&n,&maxw); for(int i=1;i<=n;i++){ scanf("%d%d%d",&b,&a,&c); for(int j=1;j<=c;j<<=1){ v[++cnt]=j*a,w[cnt]=j*b; c-=j; } if(c){ v[++cnt]=a*c; w[cnt]=b*c; } } for(int i=1;i<=cnt;i++){ for(int j=maxw;j>=w[i];--j){ dp[j]=max(dp[j],dp[j-w[i]]+v[i]); } } printf("%d",dp[maxw]); return 0; } /************************************************************** Problem: 1888 User: liangshinan Language: C++ Result: Accepted Time:22 ms Memory:3248 kb ****************************************************************/