Pagini recente » Cod sursa (job #3287927) | Cod sursa (job #721998) | Cod sursa (job #3264028) | Monitorul de evaluare | Cod sursa (job #3258282)
#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() {
fin >> n >> s.x >> s.y;
for(i = 1; i <= n; i++) {
fin >> p.x >> p.y;
c[p.GetCadranByPunct(s)].push_back(p);
}
for(i = 0; i < 4; i++) r += Drumuri(i);
cout << r;
return 0;
}