제출 #1214823

#제출 시각아이디문제언어결과실행 시간메모리
1214823biankBouquet (EGOI24_bouquet)C++20
100 / 100
42 ms5052 KiB
#include <bits/stdc++.h> using namespace std; #define forn(i,n) for(int i=0;i<int(n);i++) #define forsn(i,s,n) for(int i=int(s);i<int(n);i++) #define dforn(i,n) for(int i=int(n)-1;i>=0;i--) #define dforsn(i,s,n) for(int i=int(n)-1;i>=int(s);i--) #define fst first #define snd second #define pb push_back #define eb emplace_back #define sz(x) (int)x.size() #define all(x) x.begin(), x.end() typedef long long ll; typedef vector<ll> vll; typedef vector<int> vi; typedef pair<int,int> ii; const int N=2e5+9; int ft[N]; void upd(int p, int v){ for(p++;p<N;p+=p&-p) ft[p]=max(ft[p],v); } int query(int p){ int res=0; for(;p>0;p-=p&-p) res=max(res,ft[p]); return res; } int main(){ ios::sync_with_stdio(0); cin.tie(0); int n; cin>>n; vi l(n),r(n); forn(i,n) cin>>l[i]>>r[i]; priority_queue<ii,vector<ii>,greater<ii>> pq; vi dp(n); forn(i,n){ while(!pq.empty()&&pq.top().fst<i){ int j=pq.top().snd; pq.pop(); upd(j,dp[j]); } dp[i]=query(i-l[i])+1; pq.emplace(i+r[i],i); } cout<<*max_element(all(dp))<<'\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...