Cod sursa(job #3166785)

Utilizator Alexbora13Bora Ioan Alexandru Alexbora13 Data 9 noiembrie 2023 16:36:52
Problema Pachete Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.79 kb
#include <bits/stdc++.h>
#define START ios::sync_with_stdio(false); fin.tie(NULL); fout.tie(NULL);
#define STOP fin.close(); fout.close(); return 0;
#define MAX 50000
using namespace std;

struct punct{
    int x;
    int y;
};

int cmp(punct A, punct B)
{
    if(A.x > B.x)
        return 0;
    return 1;
}

ifstream fin("pachete.in");
ofstream fout("pachete.out");

int n;
punct v[MAX+1], a;
set <int> st_sus;
set <int> st_jos;
set <int> dr_sus;
set <int> dr_jos;
set <int> :: iterator it;

int main()
{
    START
    fin >> n;
    fin >> a.x >> a.y;
    for(int i=1; i<=n; i++)
        fin >> v[i].x >> v[i].y;
    sort(v+1,v+1+n,cmp);
    for(int i=1; i<=n; i++)
    {
        if(v[i].x > a.x && v[i].y > a.y)
        {
            it = dr_sus.upper_bound(v[i].y);
            if(it!=dr_sus.begin())
            {
                it--;
                dr_sus.erase(it);
            }
            dr_sus.insert(v[i].y);
        }
        else if(v[i].x > a.x)
        {
            it = dr_jos.upper_bound(v[i].y);
            if(it!=dr_jos.begin())
            {
                it--;
                dr_jos.erase(it);
            }
            dr_sus.insert(v[i].y);
        }
        else if(v[i].y > a.y)
        {
            it = st_sus.upper_bound(v[i].y);
            if(it!=st_sus.begin())
            {
                it--;
                st_sus.erase(it);
            }
            st_sus.insert(v[i].y);
        }
        else
        {
            it = st_jos.upper_bound(v[i].y);
            if(it!=st_jos.begin())
            {
                it--;
                st_jos.erase(it);
            }
            st_jos.insert(v[i].y);
        }
    }
    fout << st_sus.size()+st_jos.size()+dr_sus.size()+dr_jos.size();
    STOP
}