Submission #1155275

#TimeUsernameProblemLanguageResultExecution timeMemory
1155275dnnndaAdvertisement 2 (JOI23_ho_t2)C++20
100 / 100
167 ms20624 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...