Pagini recente » Cod sursa (job #412916) | Cod sursa (job #3291938) | Cod sursa (job #929751) | Scrie articole | Cod sursa (job #3258285)
#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;
}
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;
Punct nou = Punct(abs(p.x - s.x), abs(p.y - s.y));
if(p.x > s.x && p.y > s.y) c[0].push_back(nou);
if(p.x < s.x && p.y > s.y) c[1].push_back(nou);
if(p.x < s.x && p.y < s.y) c[2].push_back(nou);
if(p.x > s.x && p.y < s.y) c[3].push_back(nou);
}
for(i = 0; i < 4; i++) r += Drumuri(i);
fout << r;
return 0;
}