Cod sursa(job #3258281)

Utilizator Mihai_OctMihai Octavian Mihai_Oct Data 21 noiembrie 2024 18:38:31
Problema Pachete Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("pachete.in");
ofstream fout("pachete.out");
struct Punct {
    int x, y;

    Punct(int _x = 0, int _y = 0) {
        x = _x;
        y = _y;
    }

    int GetCadranByPunct(Punct p) {
        if(x >= p.x && y >= p.y) return 0;
        if(x <  p.x && y >= p.y) return 1;
        if(x <  p.x && y <  p.y) return 2;
        if(x >= p.x && y <  p.y) return 3;
    }

    bool operator<(Punct p) {
        return (x < p.x || (x == p.x && y < p.y));
    }
};
vector<Punct> c[4];
int n, i, r;
Punct s, p;

static inline int Drumuri(int idx) {
    set<int> s;
    int dr = 0;

    sort(c[i].begin(), c[i].end());
    for(auto cur : c[i]) {
        auto it = s.lower_bound(cur.y);

        if(it == s.begin()) {
            dr++;
            s.insert(cur.y);
        }
        else {
            it--;
            s.erase(it);
            s.insert(cur.y);
        }
    }
    return dr;
}

int main()  {
    cin >> n >> s.x >> s.y;
    for(i = 1; i <= n; i++) {
        cin >> p.x >> p.y;

        c[p.GetCadranByPunct(s)].push_back(p);
    }

    for(i = 0; i < 4; i++) r += Drumuri(i);
    cout << r;

    return 0;
}