Pagini recente » Cod sursa (job #16433) | Cod sursa (job #1301526) | Cod sursa (job #809250) | Cod sursa (job #1709123) | Cod sursa (job #1915402)
#include <fstream>
#define DIM 50001
#define f first
#define s second
using namespace std;
int n,i,x,y,X,Y,k,k1,k2,k3,k4,sol,dim,st,dr,mid;
pair <int,int> a[DIM],b[DIM],c[DIM],d[DIM];
int v[DIM];
ifstream fin ("pachete.in");
ofstream fout ("pachete.out");
int functie (pair<int,int> A[DIM]){
k = 1;
for (int i = 1;i<=dim;i++){
st = 1;
dr = k;
while (st <= dr){
mid = (st+dr)/2;
if (v[mid] <= A[i].s)
dr = mid-1;
else
st = mid+1;
}
if (st > k)
k++;
v[st] = A[i].s;
}
return k;
}
int main (){
fin>>n>>X>>Y;
for (i=1;i<=n;i++){
fin>>x>>y;
x -= X;
y -= Y;
if (x < 0){
if (y < 0){
c[++k3].f = x;
c[k3].s = y;
}
else{
a[++k1].f = x;
a[k1].s = y;
}
}
else{
if (y < 0){
d[++k4].f = x;
d[k4].s = y;
}
else{
b[++k2].f = x;
b[k2].s = y;
}
}
}
dim = k2;
sol += functie (b);
for (i=1;i<=k1;i++)
a[i].f -= a[i].f;
dim = k1;
sol += functie (a);
for (i=1;i<=k3;i++){
c[i].f -= c[i].f;
c[i].s -= c[i].s;
}
dim = k3;
sol += functie (c);
for (i=1;i<=k4;i++)
d[i].s -= d[i].s;
dim = k4;
sol + functie (d);
fout<<sol;
return 0;
}