李湛然 @ 2020-02-13 18:46:35
#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[100+5],v[100+5],q[100+5];
int f[32005];
int g[100+5][3];
int gv[100+5][3];
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>a[i]>>v[i]>>q[i];
if(q[i]!=0)
{
if(g[q[i]][1]==0)
{
g[q[i]][1]=a[i];
gv[q[i]][1]=v[i];
}
else if(g[q[i]][2]==0)
{
g[q[i]][2]=a[i];
gv[q[i]][2]=v[i];
}
}
}
for(int i=1;i<=m;i++)
{
for(int j=n;j>=a[i];j--)
{
if(q[i]==0)
{
f[j]=max(f[j],f[j-a[i]]+a[i]*v[i]);
if(g[i][1]!=0)
{
f[j]=max(f[j],f[j-a[i]-g[i][1]]+a[i]*v[i]+g[i][1]*gv[i][1]);
}
if(g[i][2]!=0)
{
f[j]=max(f[j],f[j-a[i]-g[i][2]]+a[i]*v[i]+g[i][2]*gv[i][2]);
}
if(g[i][1]!=0 && g[i][2]!=0)
{
f[j]=max(f[j],f[j-a[i]-g[i][1]-g[i][2]]+a[i]*v[i]+g[i][1]*gv[i][1]+g[i][2]*gv[i][2]);
}
}
}
}
cout<<f[n];
return 0;
}