佬别急着走给关
#include<bits/stdc++.h>
using namespace std;
long long v[32001],s[32001],zf,dp[32001],n,m,q[32001][3],f[32001][3],zx[3201][5],z,l;
int main()
{
cin>>n>>m;
int k=m;
for(int i=1;i<=m;i++)
{
cin>>z>>l>>zf;
if(!zf){
v[i]=z*l;
s[i]=z;
}
else{
zx[zf][0]++;
q[i][zx[i][0]]=z*l;
f[i][zx[i][0]]=z;
}
}
for(int i=1;i<=k;i++)
{
for(int j=n;j>=s[i];j--)
{
dp[j]=max(dp[j],dp[j-s[i]]+v[i]);
if(j>=s[i]+f[i][1])
dp[j]=max(dp[j],dp[j-s[i]-f[i][1]]+v[i]+q[i][1]);
if(j>=s[i]+f[i][2])
dp[j]=max(dp[j],dp[j-s[i]-f[i][2]]+v[i]+q[i][2]);
if(j>=s[i]+f[i][1]+f[i][2])
dp[j]=max(dp[j],dp[j-s[i]-f[i][1]-f[i][2]]+v[i]+q[i][1]+q[i][2]);
}
}
cout<<dp[n];
return 0;
}