AC码子
#include<bits/stdc++.h>
using namespace std;
int bw,n;
int a[1005],b[1005],c[1005];
bool f[1005];
int dfs(int t,int w,bool g[1005]){
bool p[1005];for(int i=0;i<n;i++)p[i]=g[i];
if(t>n)return 0;
int s=0,s1=0;
s=dfs(t+1,w,g);
if(!g[c[t]]&&w>=a[t]){
p[c[t]]=1;
s1=dfs(t+1,w-a[t],p)+b[t];
}
return max(s1,s);
}
int main(){
cin>>bw>>n;
for(int i=1;i<=n;i++)cin>>a[i]>>b[i]>>c[i];
cout<<dfs(1,bw,f);
return 0;
}