http://acm.uestc.edu.cn/#/problem/show/1606
#include<iostream>
using namespace std;
#include<string.h>
#include<algorithm>
int type[20005];
int a[20005];
int b[20005];
int dp[20005];
int main()
{
int n,k;
scanf("%d%d",&n,&k);
int i,j;
for(i=1;i<=n;i++)
scanf("%d%d%d",&type[i],&a[i],&b[i]);
memset(dp,0,sizeof(dp));
for(i=1;i<=n;i++)
{
if(type[i]==1)
{
for(j=0;j<=k;j++)
if(j>=b[i])
dp[j]=max(dp[j],dp[j-b[i]]+a[i]);
}
else
{
for(j=k;j>=0;j--)
if(j>=b[i])
dp[j]=max(dp[j],dp[j-b[i]]+a[i]);
}
}
cout<<dp[k]<<endl;
return 0;
}