Submission #1220671

#TimeUsernameProblemLanguageResultExecution timeMemory
1220671overwatch9Bouquet (EGOI24_bouquet)C++20
0 / 100
44 ms7416 KiB
#include <bits/stdc++.h>
using namespace std;
bool comp(pair <int, int> a, pair <int, int> b) {
    return a.second < b.second;
}
int main() {
    int n;
    cin >> n;
    vector <pair <int, int>> nums(n*3);
    for (int i = 1; i <= n; i++) {
        int l, r;
        cin >> l >> r;
        if (l == 0)
            l--;
        if (r == 0)
            r++;
        nums[i].first = max(0, i - l);
        nums[i].second = min(n, i + r);
    }
    sort(nums.begin()+1, nums.begin() + n + 1, comp);
    vector <int> dp(n*3);
    int p = 1;
    for (int i = 1; i <= n; i++) {
        dp[i] = dp[i-1];
        while (p <= n && nums[p].second == i) {
            dp[i] = max(dp[i], dp[nums[p].first] + 1);
            p++;
        }
    }
    cout << dp[n] << '\n';
}
#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...