Submission #1240881

#TimeUsernameProblemLanguageResultExecution timeMemory
1240881aren_danceBouquet (EGOI24_bouquet)C++20
100 / 100
107 ms21576 KiB
#include <bits/stdc++.h> using namespace std; const int N=5e5; int n; int l[N]; int r[N]; int dp[N]; int fw[N]; vector<int> g[N]; void update(int pos,int new_val){ for(;pos<N;pos+=(pos&-pos)){ fw[pos]=max(fw[pos],new_val); } } int get(int pos){ int answ=0ll; for(;pos>0;pos-=(pos&-pos)){ answ=max(answ,fw[pos]); } return answ; } int main() { cin>>n; for(int i=1;i<=n;++i){ cin>>l[i]>>r[i]; } dp[0]=1; for(int i=1;i<=n;++i){ for(auto j:g[i]){ update(j,dp[j]); } int x=0; dp[i]=1; dp[i]=max(1,get(i-l[i]-1)+1); g[i+r[i]+1].push_back(i); } int mx=0; for(int i=1;i<=n;++i){ mx=max(mx,dp[i]); } cout<<mx<<'\n'; return 0; }
#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...