Pagini recente » Cod sursa (job #3171432) | Cod sursa (job #1931436) | Cod sursa (job #2877481) | Cod sursa (job #2731392) | Cod sursa (job #1220968)
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<set>
#define NMAX 50000
using namespace std;
set<long long> st;
set<long long>::iterator aux;
typedef struct un_pct {
long long x;
long long y;
}punct;
punct pct[4][NMAX];
int cmp(punct a, punct b)
{
return( a.x < b.x);
}
int nr[4];
int main()
{
FILE *fin, *fout;
fin = fopen("pachete.in", "r");
fout = fopen("pachete.out", "w");
long long n, sol = 0, x, y, ox, oy;
fscanf(fin, "%lld", &n);
fscanf(fin, "%lld %lld", &ox, &oy);
for(int i = 0; i < n; ++i) {
fscanf(fin, "%lld %lld", &x, &y);
x -= ox;
y -= oy;
if( x >= 0 && y >= 0 ) {
pct[0][nr[0]].x = x; pct[0][nr[0]++].y = y;
}
if( x >= 0 && y < 0 ) {
pct[1][nr[1]].x = x; pct[1][nr[1]++].y = y;
}
if( x < 0 && y <= 0) {
pct[2][nr[2]].x = x; pct[2][nr[2]++].y = y;
}
if( x < 0 && y > 0 ) {
pct[3][nr[3]].x = x; pct[3][nr[3]++].y = y;
}
}
for(int p = 0; p <= 3; p++) {
sort(pct[p], pct[p] + nr[p], cmp);
for(int i = 0; i < nr[p]; ++i)
{
aux = lower_bound (st.begin(), st.end(), pct[p][i].y);
if(aux == st.begin()) {
++sol;
}
else {
--aux;
st.erase(aux);
}
st.insert(pct[p][i].y);
}
}
fprintf(fout, "%lld", sol);
}