WA:#2,#4,#5,#6,#7,#8
subtask过了
#include<bits/stdc++.h>
using namespace std;
const int N=1000000;
struct node{
int av=0,aw=0,bv=0,bw=0;
};
node ma[N];
node ex[N];
int n,m,d[N],mi,ei,u[N];
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(c==0){
ma[i].av=a;
ma[i].aw=b*a;
}else{
u[c]=++ei;
if(u[c]==2){
ex[c].bv=a;
ex[c].bw=a*b;
}else{
ex[c].av=a;
ex[c].aw=a*b;
}
}
}
for(int i=1;i<=m;i++){
for(int j=n;ma[i].av && j>=ma[i].av;j--){
d[j]=max(d[j],d[j-ma[i].av]+ma[i].aw);
if(j >= ma[i].av + ex[i].av){
d[j]=max(d[j],d[j - ma[i].av - ex[i].av ]+ ma[i].aw + ex[i].aw);
}else if(j >= ma[i].av + ex[i].bv){
d[j]=max(d[j] , d[j - ma[i].av - ex[i].bv] + ma[i].aw + ex[i].bw);
}else if(j >= ma[i].av + ex[i].bv + ex[i].av){
d[j]=max(d[j] , d[j - ma[i].av - ex[i].bv - ex[i].av] + ma[i].aw + ex[i].bw + ex[i].aw);
}
}
}
cout<<d[n];
}