// بسم الله الرحمن الرحيم
#include "bits/stdc++.h"
using namespace std;
#define ll long long
#define int long long
#define pb push_back
#define endl '\n'
#define ld long double
#define applejuice ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
const ll mod=1e9+7;
const ll inf=1e18;
const ll mxsz=100+4;
const ld pi=acos(-1.0);
map<int,int>mp;
signed main() {
applejuice;
int n;
cin>>n;
int l[n],r[n];
bool flag=false;
for (int i=0;i<n;i++){
cin>>l[i]>>r[i];
}
int dp[n+1]={};
vector<vector<int>>cur(n+1);
mp[-inf]=0;
//cout<<"eifohe";
for (int i=0;i<n;i++){
for (auto j:cur[i]){
auto x=mp.lower_bound(j);
//int mm = *(--x->second)
if(prev(x)->second>dp[j]) continue;
while(x!=mp.end() && x->second<=dp[j]){
mp.erase(x++);
}
//cout<<mp[j]<<" ";
mp[j]=dp[j];
//cout<<mp[j]<<" ";
}
//cout<<dp[i]<<" ";
dp[i]=(--mp.lower_bound(i-l[i]))->second+1;
//cout<<dp[i]<<" ";
//cout<<"oufr";
cur[min(n,i+r[i]+1)].pb(i);
}
/*for (int i=0;i<n;i++){
cout<<dp[i]<<" ";
}*/
/*for (auto [x,y]:mp){
cout<<x<<" "<<y<<endl;
}*/
int ans=0;
for (auto x:dp){
ans=max(x,ans);
}
cout<<ans;
/*int dpl[n],dpr[n];
dpl[0]=1,dpr[n-1]=1;
if (n<=1000){
int dp[n];
dp[0]=1;
for (int i=0;i<n;i++){
if(i>0)dp[i]=1;
for (int j=0;j<i;j++){
if(j<i && max(a[i].first,a[j].second)<i-j){
dp[i]=max(dp[i],dp[j]+1);
//cout<<i<<" "<<j<<" "<<dp[i]<<" "<<dp[j]<<" ";
}
}
}
int mx=0;
for (auto x:dp)mx=max(x,mx);
//for (auto x:dp)cout<<x<<" ";
cout<<mx;
return 0;
}
if (flag)
cout<<(n-1)/(a[0].first+1)+1;
else {
for (int i = 0; i < n; i++) {
if (i > 0)dpl[i] = dpl[i - 1];
//cout<<i<<" "<<a[i].second;
if (i > a[i].first) {
dpl[i] = max(dpl[i], dpl[i - a[i].first - 1] + 1);
}
}
cout<<dpl[n-1]<<endl;
}*/
//cout<<dpr[0];
/*for (int i=n-1;i>=0;i--){
if(i<n-1)dpr[i]=dpr[i+1];
//cout<<dpr[n-1]<<endl;
if(i>a[i].second){
//cout<<"ihef";
dpr[i]=max(dpr[i],dpr[i+a[i].first+1]+1);
}
}*/
/*for (auto x:dpl){
cout<<x<<" ";
}cout<<endl;
for (auto x:dpr){
cout<<x<<" ";
}*/
//int mx=0;
//cout<<dpl[n-1]-dpr[n-1]+1;
return 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... |