#include <bits/stdc++.h>
using namespace std;
int main(){
cin.tie(nullptr);
ios_base::sync_with_stdio(false);
bool firstCode = true;
int n;
cin>>n;
vector<pair<int,int>> a(n);
vector<int> dp(n,1);
for(int i = 0;i<n;i++){
int l,r;
cin>>l>>r;
if(r!=0&&l!=r){
firstCode = false;
}
a[i] = {l,r};
}
if(!firstCode){
int ans = 0;
for(int i = 0;i<n;i++){
for(int j = 0;j<i;j++){
if(max(a[j].second,a[i].first)<i-j){
dp[i] = max(dp[i],dp[j]+1);
}
}
ans= max(ans,dp[i]);
}
cout<<ans<<endl;
}else{
vector<int> maxUntil(n,1);
for(int i = 0;i<n;i++){
if(i-a[i].first-1>=0){
dp[i] = max(dp[i],maxUntil[i-a[i].first-1]+1);
}else{
dp[i] = 1;
}
if(i!=0){
maxUntil[i] = max(maxUntil[i-1],dp[i]);
}else{
maxUntil[i] = dp[i];
}
}
cout<<maxUntil[n-1]<<endl;
}
}
/*
4
1 0
1 0
1 0
4 0
*/
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |