#include<bits/stdc++.h> using namespace std; int dp[20000]; int cnt=1; int v[20000],w[20000]; int main(){ int N,V; cin>>N>>V; for(int i=1;i<=N;i++){ int a,b,s; //vi,wi,si cin>>a>>b>>s; int k=1; while(k<=s){ v[cnt]=k*a; w[cnt++]=k*b; s=s-k; k=k*2; } if(s>0){ v[cnt]=s*a; w[cnt++]=s*b; } } for(int i=1;i<=cnt;i++){ for(int j=V;j>=v[i];j--){ dp[j]=max(dp[j],dp[j-v[i]]+w[i]); } } cout<<dp[V]; } /************************************************************** Problem: 1889 User: caizhihao Language: C++ Result: Accepted Time:163 ms Memory:2308 kb ****************************************************************/