#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define MOD 998244353
void solve(){
ll n;
cin >> n;
vector<ll> L(n), R(n);
for(int i =0 ; i < n; i ++){
cin >> L[i] >> R[i];
}
vector<int> rec = {0};
priority_queue<tuple<int, int, int>, vector<tuple<int, int, int>>, greater<>> pq;
for (int i = 0; i < n; ++i){
ll l = min(L[i], i * 1ll), r = min(R[i], n - 1 - i);
ll it = upper_bound(rec.begin(), rec.end(), i - l) - rec.begin();
pq.push({i + r, it, i + 1});
while(!pq.empty() and get<0>(pq.top()) == i){
auto [tmp, j, m] = pq.top();
pq.pop();
if (j == rec.size()){
rec.push_back(m);
}
else{
rec[j] = min(rec[j], m);
}
}
}
cout << rec.size() - 1 << endl;
}
int main() {
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int tests = 1;
// cin >> tests;
for(int i = 1; i <= tests; i ++)
solve();
}
# | 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... |