#include<bits/stdc++.h>
using namespace std;
#define S second
#define F first
#define ll long long
#define int long long
//#pragma GCC optimize("Ofast, unroll-loop")
//#pragma GCC target("avx,avx2")
#pragma GCC optimize("O3")
const int inf=0x3f3f3f3f;
const ll inff=0x3f3f3f3f3f3f3f3f;
const int X=1000000007;
int l[500005], r[500005], ans;
pair<int,int> p[500005]; // x, e
bool vis[500005];
bool over(int i1, int i2){
return abs(p[i1].F-p[i2].F)<=p[i1].S-p[i2].S;
}
signed main(){
ios::sync_with_stdio(0), cin.tie(0);
int n; cin >> n;
for(int i=0 ; i<n ; i++) cin >> p[i].F >> p[i].S;
sort(p,p+n);
for(int i=1 ; i<n ; i++) l[i]=i-1;
for(int i=0 ; i<n-1 ; i++) r[i]=i+1;
l[0]=-1, r[n-1]=-1;
vector<int> v;
for(int i=0 ; i<n ; i++) v.push_back(i);
sort(v.begin(),v.end(),[](int a, int b){
return p[a].S>p[b].S;
});
for(int i:v){
if(vis[i]) continue;
ans++;
while(r[i]!=-1&&over(i,r[i])){
vis[r[i]]=1;
l[r[r[i]]]=i;
r[i]=r[r[i]];
}
while(l[i]!=-1&&over(i,l[i])){
vis[l[i]]=1;
r[l[l[i]]]=i;
l[i]=l[l[i]];
}
}
cout << ans << '\n';
return 0;
}
# | 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... |