제출 #1173351

#제출 시각아이디문제언어결과실행 시간메모리
1173351jiahcBouquet (EGOI24_bouquet)C++20
100 / 100
52 ms14500 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 200010; int n, l[N], r[N], tr[N], f[N], ans; vector<int> upd[N]; int lowbit(int i) { return i & -i; } void update(int x, int k) { for (int i = x; i <= n; i += lowbit(i)) tr[i] = max(tr[i], k); } int query(int x) { int res = 0; for (int i = x; i > 0; i -= lowbit(i)) res = max(res, tr[i]); return res; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> n; for (int i = 1; i <= n; i++) cin >> l[i] >> r[i]; for (int i = 1; i <= n; i++) { if (i - 1 <= l[i]) f[i] = 1; else f[i] = query(i - l[i] - 1) + 1; ans = max(ans, f[i]); upd[min(n, i + r[i])].push_back(i); for (int j : upd[i]) update(j, f[j]); } cout << ans << "\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...