제출 #1148427

#제출 시각아이디문제언어결과실행 시간메모리
1148427SyedSohaib_123Bouquet (EGOI24_bouquet)C++20
24 / 100
139 ms28624 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],val[N]; void solve(int tst){ int n; cin>>n; int ans=0; set<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,v]:g[i]){ auto it=s.lower_bound(ind); if(it!=s.begin()){ --it; val[ind]=max(val[ind],val[*it]); } s.insert(ind); } int x=i-l-1,y=i+1+r; auto it=s.lower_bound(x+1); if(it!=s.begin()) dp[i]=max(dp[i],val[*--it]+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]); val[i]=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...