大佬们帮我瞅瞅,哪里错了
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll N=105;
ll n,m,s[32005],v[N],p[N],q[N],num[N],f[N][5][5],f2[N];
void init(){
for(ll i=1;i<=n;++i){
if(num[i]==1)f2[i]=1;
if(num[i]==2)f2[i]=2;
if(num[i]>=2)f[i][2][1]+=f[i][1][1];
f[i][2][2]+=f[i][1][2];
if(num[i]==3){
f2[i]=4;
f[i][3][1]+=f[i][1][1];
f[i][3][2]+=f[i][1][2];
f[i][4][1]=f[i][2][1]+f[i][3][1]-f[i][1][1];
f[i][4][2]=f[i][2][2]+f[i][3][2]-f[i][1][2];
}
}
}
int main(){
scanf("%lld%lld",&m,&n);
for(ll i=1;i<=n;++i){
scanf("%lld%lld%lld",&v[i],&p[i],&q[i]);
if(!q[i]){
++num[i];
f[i][1][1]=v[i]*p[i];
f[i][1][2]=v[i];
}else{
++num[q[i]];
f[q[i]][num[q[i]]][1]=v[i]*p[i];
f[q[i]][num[q[i]]][2]=v[i];
}
}
init();
for(ll i=1;i<=n;++i)
if(num[i]>0)
for(ll j=m;j>=0;--j)
for(ll k=1;k<=f2[i];++k)
if(f[i][k][2]<=j)s[j]=max(s[j],s[j-f[i][k][2]]+f[i][k][1]);
printf("%lld",s[m]);
return 0;
}
对了必关