제출 #1148423

#제출 시각아이디문제언어결과실행 시간메모리
1148423SyedSohaib_123Bouquet (EGOI24_bouquet)C++20
28 / 100
3095 ms14024 KiB
#include <bits/stdc++.h>

using namespace std;

#define append push_back
#define int long long

const int N=4e5+10,LG=21;
int mod=998244353;

vector<pair<int,int>>g[N];
int dp[N];

void solve(int tst){
    int n;
    cin>>n;
    int ans=0;
    set<pair<int,int>>s;
    for(int i=0;i<n;i++) dp[i]=1;
    for(int i=0;i<n;i++){
        int l,r;
        cin>>l>>r;
        for(auto [ind,val]:g[i]){
            // auto it=s.lower_bound({ind,0});
            // if(it!=s.begin()) val=max(val,(*--it).second);
            s.insert({ind,val});
        }
        int x=i-l-1,y=i+1+r;
        // auto it=s.lower_bound({x+1,0});
        // if(it!=s.begin()) dp[i]=max(dp[i],(*--it).second+1);
        for(auto it=s.begin();it!=s.end() and (*it).first<=x;++it) dp[i]=max(dp[i],(*it).second+1);
        if(y<n) g[y].append({i,dp[i]});
        ans=max(ans,dp[i]);
    }
    cout<<ans<<endl;
}

signed main(){
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int t = 1;
    // cin >> t;
    for(int i=1;i<=t;i++)
        solve(i);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...