Pagini recente » Cod sursa (job #2583579) | Cod sursa (job #1828201) | Cod sursa (job #928444) | Cod sursa (job #2703339) | Cod sursa (job #1929949)
#include<cstdio>
#include<algorithm>
using namespace std;
struct punct{int x,y;};
punct v[50001];
punct a[50001];
bool cmp(punct a,punct b){
if(a.x<b.x&&a.y<b.y)
return true;
else
return false;
}
int main(){
int n,x,y,i,nr,k;
freopen("pachete.in","r",stdin);
freopen("pachete.out","w",stdout);
scanf("%d%d%d",&n,&x,&y);
for(i=1;i<=n;i++){
scanf("%d%d",&v[i].x,&v[i].y);
v[i].x-=x;
v[i].y-=y;
}
nr=0;
//cadranul 1
k=0;
for(i=1;i<=n;i++){
if(v[i].x>0&&v[i].y>0){
k++;
a[k].x=v[i].x;
a[k].y=v[i].y;
}
}
if(k!=0){
sort(a+1,a+k+1,cmp);
nr++;
for(i=1;i<k;i++)
if(!(a[i].x<a[i+1].x&&a[i].y<a[i+1].y))
nr++;
}
//cadranul 2
k=0;
for(i=1;i<=n;i++){
if(v[i].x<0&&v[i].y>0){
k++;
a[k].x=-v[i].x;
a[k].y=v[i].y;
}
}
if(k!=0){
sort(a+1,a+k+1,cmp);
nr++;
for(i=1;i<k;i++)
if(!(a[i].x<a[i+1].x&&a[i].y<a[i+1].y))
nr++;
}
//cadranul 3
k=0;
for(i=1;i<=n;i++){
if(v[i].x<0&&v[i].y<0){
k++;
a[k].x=-v[i].x;
a[k].y=-v[i].y;
}
}
if(k!=0){
sort(a+1,a+k+1,cmp);
nr++;
for(i=1;i<k;i++)
if(!(a[i].x<a[i+1].x&&a[i].y<a[i+1].y))
nr++;
}
//cadranul 4
k=0;
for(i=1;i<=n;i++){
if(v[i].x>0&&v[i].y<0){
k++;
a[k].x=v[i].x;
a[k].y=-v[i].y;
}
}
if(k!=0){
sort(a+1,a+k+1,cmp);
nr++;
for(i=1;i<k;i++)
if(!(a[i].x<a[i+1].x&&a[i].y<a[i+1].y))
nr++;
}
printf("%d",nr);
return 0;
}