怎么了,我又打假了,大佬快来
#include<iostream>
#include<cstdio>
#include<fstream>
#include<algorithm>
#include<cmath>
#include<deque>
#include<vector>
#include<queue>
#include<string>
#include<cstring>
#include<map>
#include<stack>
#include<set>
using namespace std;
int n,m,f[1001][4001],h;
struct asd{
int t,f,h;
} s[10000];
bool cmp(asd a,asd b){
if(a.t==b.t&&a.f==b.f) return a.h<b.h;
if(a.t==b.t) return a.f<b.f;
return a.t<b.t;
}
int main(){
scanf("%d%d",&m,&n);
for(int i=1;i<=n;i++){
scanf("%d%d%d",&s[i].t,&s[i].f,&s[i].h);
h=max(h,s[i].t);
}
sort(s+1,s+n+1,cmp);
f[0][10]=1;h+=10;
for(int i=1;i<=n;i++) h+=s[i].f;
for(int k=1;k<=n;k++){
for(int i=m-1;i>=0;i--){
for(int j=h;j>=s[k].t;j--){
if(f[i][j]){
if(j+s[k].h>=m){
cout<<s[k].t;
return 0;
}
f[i+s[k].f][j]=1;
f[i][j+s[k].h]=1;
}
}
}
}
for(int i=h;i>=1;i--){
if(f[i][0]==1){
cout<<i;
return 0;
}
}
cout<<0;
}