#include <bits/stdc++.h>
#define int long long
using namespace std;
vector<pair<int, int> > vec;
set<int> s;
void upd(int a, int b)
{
    for (int i=a; i<=2000000000; i+=i&(-i))
        for (int j=b; j<=2000000000; j+=j&(-j))
            s.insert(i*2000000001+j);
}
int qry(int a, int b)
{
    for (int i=a; i; i-=i&(-i))
        for (int j=b; j; j-=j&(-j))
            if (s.find(i*2000000001+j)!=s.end())
                return 1;
    return 0;
}
signed main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n, cnt=0;
    cin >> n;
    for (int i=0; i<n; i++)
    {
        int x, y;
        cin >> x >> y;
        vec.push_back({y, x});
    }
    sort(vec.begin(), vec.end(), greater<pair<int, int> >());
    for (int i=0; i<n; i++)
    {
        int y=vec[i].first, x=vec[i].second;
        if (!qry(-x-y+2000000001, x-y+1000000000))
        {
            upd(-x-y+2000000001, x-y+1000000000);
            cnt++;
        }
    }
    cout << cnt;
}
| # | 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... |