제출 #1148377

#제출 시각아이디문제언어결과실행 시간메모리
1148377SyedSohaib_123Bouquet (EGOI24_bouquet)C++20
8 / 100
122 ms30188 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; dp[0]=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.end()){ val=max(val,(*it).second); } s.insert({ind,val}); } int x=i-l-1,y=i+1+r; dp[i]=1; auto it=s.lower_bound({x+1,0}); if(it!=s.begin()) --it; else it=s.end(); if(it!=s.end()){ dp[i]+=(*it).second; } if((*s.begin()).first<=x) dp[i]=max(dp[i],(*s.begin()).second+1); it=s.lower_bound({i,0}); if(it!=s.end() and (*it).first==i) s.erase(it); 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...