제출 #1171256

#제출 시각아이디문제언어결과실행 시간메모리
1171256FZ_LaabidiBouquet (EGOI24_bouquet)C++20
24 / 100
60 ms3552 KiB
#include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; vector<pair<int, int>> flowers(n+1, {INT_MAX, INT_MAX}); vector<int> dp(n, 1), b(n+1, INT_MAX); for(int i = 0; i < n; i++) cin >> flowers[i].first >> flowers[i].second; b[0]=-1; for (int i=0; i<n; i++) { int l=0, r = n, k=0; while (l<r) { int m = l+(r-l)/2; if (b[m]<i-flowers[i].first&& b[m]+flowers[b[m]].second<i) { k = m; l = m+1; } else r = m; } dp[i]= k+1; b[dp[i]]= min(i, b[dp[i]]); } cout << *max_element(dp.begin(), dp.end())<< endl; }
#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...