Pagini recente » Cod sursa (job #2914069) | Cod sursa (job #2610985) | Cod sursa (job #2010458) | Cod sursa (job #936734) | Cod sursa (job #1948718)
#include<cstdio>
#include<algorithm>
using namespace std;
struct cad
{
int i,j;
};
cad ma[5][50002];
int st[5][100000];
const int inf=2e9+2;
bool so(cad a,cad b)
{
return a.i<b.i;
}
int f(int cadr)
{
if(ma[cadr][0].i==0)
return 0;
sort(ma[cadr]+1,ma[cadr]+ma[cadr][0].i,so);
int n=ma[cadr][0].i;
st[cadr][0]=inf;
int a=1<<15,pas,s=0,poz;
for(int i=1;i<=n;i++)
{
pas=a;
poz=0;
while(pas)
{
if(st[cadr][poz+pas]>ma[cadr][i].j)
{
poz+=pas;
}
pas/=2;
}
if(st[cadr][poz+1]==0)
s++;
st[cadr][poz+1]=ma[cadr][i].j;
}
return s;
}
int main()
{
freopen("pachete.in","r",stdin);
freopen("pachete.out","w",stdout);
int n,i,x,y,x1,y1;
scanf("%d%d%d",&n,&x,&y);
for(i=1;i<=n;i++)
{
scanf("%d%d",&x1,&y1);
if(x1>x)
{
if(y1>y)
{
ma[1][0].i++;
ma[1][ma[1][0].i].i=x1-x;
ma[1][ma[1][0].i].j=y1-y;
}
else
{
ma[2][0].i++;
ma[2][ma[2][0].i].i=x1-x;
ma[2][ma[2][0].i].j=y-y1;
}
}
else
{
if(y1>y)
{
ma[3][0].i++;
ma[3][ma[3][0].i].i=x-x1;
ma[3][ma[3][0].i].j=y1-y;
}
else
{
ma[4][0].i++;
ma[4][ma[4][0].i].i=x-x1;
ma[4][ma[4][0].i].j=y-y1;
}
}
}
printf("%d",f(1)+f(2)+f(3)+f(4));
return 0;
}