Submission #1228903

#TimeUsernameProblemLanguageResultExecution timeMemory
1228903HaroldBouquet (EGOI24_bouquet)C++20
0 / 100
3093 ms3652 KiB
#include<bits/stdc++.h>

using namespace std;

#define all(x) x.begin(), x.end()


int main() {
    int n;
    cin >> n;
    vector<pair<int, int>> a(n);
    for (int i = 0; i < n; i++)
    {
        cin >> a[i].first >> a[i].second;
    }
    
    vector<int> dp1(n), dp2(n);
    dp1[0] = 1;
    dp2[n-1] = 1;
    for (int i = 1; i < n; i++)
    {
        dp1[i] = dp1[i-1];
        for (int j = i-a[i].first-1; j >= 0; j--)
        {
            if(j+a[j].second < i) {
                dp1[i] = max(dp1[i], 1+dp1[j]);
            }
        }
        
        dp2[n-i-1] = dp2[n-i];
        for (int j = n-i+a[n-i-1].second; j < n; j++)
        {
            if(j-a[j].first > n-i-1) {
                dp2[n-i-1] = max(dp2[n-i-1], 1+dp2[j]);
            }
        }
    }

    /*for(auto i: dp1) {
        cout << i << " ";
    }
    cout << endl;

    for(auto i: dp2) {
        cout << i << " ";
    }
    cout << endl;*/

    cout << max(dp1[n-1], dp2[0]) << endl;
    
    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...