#include <bits/stdc++.h>
using namespace std;
vector<int> make_sorted_index(vector<pair<int, int>> const& values) {
    vector<int> index(values.size());
    iota(index.begin(), index.end(), 0);
    stable_sort(index.begin(), index.end(), [&values](int a, int b) { return values[a].first < values[b].first; } );
    return index;
}
int main() {
    int n; cin >> n;
    vector<pair<int, int>> flowers(n+1, {INT_MAX, INT_MAX});
    vector<int> dp(n, 0);
    for(int i = 0; i < n; i++)
        cin >> flowers[i].first >> flowers[i].second;
    for (int i=0; i<n; i++) {
        for (int j=n-1; j>i; j--) {
            if (j-max(flowers[j].first, flowers[i].second)>i) {
                dp[i]= max(dp[i], dp[j]+1);
            }
        }
        for (int j=0; j<i; j++) {
            if (j+max(flowers[j].second, flowers[i].first)<i) {
                dp[i]= max(dp[i], dp[j]+1);
            }
        }
    }
    //for (int i=0; i<n; i++)cout << dp[i]<< " ";
    cout << *max_element(dp.begin(), dp.end()) << endl;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |