Submission #1241874

#TimeUsernameProblemLanguageResultExecution timeMemory
1241874AMel0nBouquet (EGOI24_bouquet)C++20
100 / 100
55 ms22344 KiB
// upd comments #include <bits/stdc++.h> using namespace std; typedef long long ll; #define FOR(i,N) for(ll i = 0; i < N; i++) #define all(x) (x).begin(), (x).end() #define F first #define S second signed main() { cin.tie(0); ios::sync_with_stdio(false); ll N; cin >> N; vector<ll> L(N), R(N); FOR(i, N) cin >> L[i] >> R[i]; vector<vector<ll>> todo(N*2+5); vector<ll> dp(N), B(N+5, 1e18); // B[k] = max j such that dp[j] > k dp[0] = 1; B[0] = -1; todo[R[0] + 1].push_back(0); for(ll i = 1; i < N; i++) { for(ll j: todo[i]) B[dp[j]] = min(B[dp[j]], j); ll lo = 0, hi = N; while(lo < hi - 1) { ll mid = (lo + hi) / 2; if (B[mid] < i-L[i]) lo = mid; else hi = mid; } dp[i] = 1 + lo; todo[i + R[i] + 1].push_back(i); } cout << *max_element(all(dp)); }
#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...