Pagini recente » Cod sursa (job #2522501) | Cod sursa (job #2158659) | Cod sursa (job #1159307) | Cod sursa (job #3324084) | Cod sursa (job #3346076)
#include <fstream>
#include <algorithm>
#include <vector>
#include <set>
using namespace std;
const int NMAX = 50000;
using ll = long long;
ifstream cin("pachete.in");
ofstream cout("pachete.out");
int solve(vector <pair <ll, ll>>& v) {
sort(v.begin(), v.end()); ///dupa first, dc nu dupa second
set <ll> s; ///cu coord
for(auto [x, y] : v) {
if(s.size() == 0 || *s.begin() > y)
s.insert(y);
else {
auto pos = s.upper_bound(y);
pos--;
ll val = *pos;
s.erase(val);
s.insert(y);
}
}
return s.size();
}
vector<pair <ll, ll>> v[4]; ///(+,+), (+,-), (-,+), (-,-)
int main() {
int n;
ll x, y;
cin >> n >> x >> y;
for(int i = 1; i <= n; i++) {
ll a, b;
cin >> a >> b;
a -= x, b-= y;
if(a > 0 && b > 0)
v[0].push_back({a, b});
else if(a > 0 && b < 0)
v[1].push_back({a, -b});
else if(a < 0 && b > 0)
v[2].push_back({-a, b});
else
v[3].push_back({-a, -b});
}
int ans = 0;
for(int i = 0; i < 4; i++)
ans += solve(v[i]);
cout << ans;
return 0;
}