#include<bits/stdc++.h>
using namespace std;
int dp[1005],t[105],f[105],h[105],d,n,flag[1005];
int main(){
int tem=10;
flag[10]=1;
cin>>d>>n;
for(int i=1;i<=n;i++)cin>>t[i]>>f[i]>>h[i];
for(int i=1;i<=n;i++){
if(tem<t[i])break;
tem+=f[i];
for(int j=min(tem,1000);j>=t[i];j--){
if(flag[j-f[i]]&&flag[j]){
if(dp[j]+h[i]>=d)dp[j]=dp[j]+h[i];
else if(tem-f[i]==t[i])dp[j] = dp[j-f[i]];
else dp[j]=max(dp[j-f[i]],dp[j]+h[i]);
}
else if(flag[j-f[i]])dp[j]=dp[j-f[i]],flag[j]=1;
else if(flag[j]&&(tem-f[i]>t[i]||dp[j]+h[i]>=d))dp[j]=dp[j]+h[i];
else continue;
if(dp[j]>=d){
cout<<t[i];
return 0;
}
}
}
cout<<tem;
return 0;
}
在本地运行#9后结果为2980与下载的#9答案一致,但不知道为什么测评机认为不对。