rt,看不出哪里错,万分感谢。
WA on # 2 7 9
#include<iostream>
#include<cstdio>
#include<vector>
#define N 10010
using namespace std;
vector<int>G[N];
int n,k,f[N],ans,nxt[N];
int main(){
int l,r;
cin>>n>>k;
while(k--){
cin>>l>>r;
r=l+r-1;
G[l].push_back(r);
}
nxt[n+1]=n+1;
for(int i=n;i>=0;i--)
if(G[i].size())
nxt[i]=i;
else
nxt[i]=nxt[i+1];
G[0].push_back(0);
for(int i=0;i<=n+1;i++){
for(auto j:G[i]){
f[nxt[j+1]]=max(f[nxt[j+1]],f[i]+nxt[j+1]-j-1);
}
if(f[i]>ans)
cout<<i<<' '<<f[i]<<endl;
ans=max(ans,f[i]);
}
cout<<ans;
return 0;
}