Submission #1171256

#TimeUsernameProblemLanguageResultExecution timeMemory
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...