Pagini recente » Cod sursa (job #1138742) | Cod sursa (job #3193333) | Cod sursa (job #1154682) | Cod sursa (job #3240380) | Cod sursa (job #7332)
Cod sursa(job #7332)
#include <stdio.h>
#include <stdlib.h>
#define nmax 50001
//50001
FILE *f,*g;
long a[nmax][2];
long c1[nmax][2],c2[nmax][2],c3[nmax][2],c4[nmax][2],prev[nmax][2];
long n1,n2,n3,n4,nn;
int compare(const void *a,const void *b)
{
return (*(long*)a-*(long*)b);
}
int main()
{
long n,x,y,i,nr,j,ok;
FILE *f=fopen("pachete.in","rt");
FILE *g=fopen("pachete.out","wt");
fscanf(f,"%ld",&n);
fscanf(f,"%ld %ld",&x,&y);
nr=n;
n1=n2=n3=n4=-1;
for (i=1;i<=n;i++)
{
fscanf(f,"%ld %ld",&a[i][0],&a[i][1]);
if (a[i][0]>x&&a[i][1]<=y)
{
c1[++n1][0]=a[i][0];
c1[n1][1]=a[i][1];
}
if (a[i][0]>x&&a[i][1]>y)
{
c2[++n2][0]=a[i][0];
c2[n2][1]=a[i][1];
}
if (a[i][0]<x&&a[i][1]>y)
{
c3[++n3][0]=a[i][0];
c3[n3][1]=a[i][1];
}
if (a[i][0]<=x&&a[i][1]<y)
{
c4[++n4][0]=a[i][0];
c4[n4][1]=a[i][1];
}
}
if (n1>-1)
qsort(c1,n1,sizeof(long),compare);
if (n2>-1)
qsort(c2,n2,sizeof(long),compare);
if (n3>-1)
qsort(c3,n3,sizeof(long),compare);
if (n4>-1)
qsort(c4,n4,sizeof(long),compare);
nn=0;
//cadranul 1
for (i=0;i<=n1;i++)
{
ok=0;
for (j=1;j<=nn;j++)
{
if (c1[i][1]<=prev[j][1])
{
nr--;
prev[j][1]=c1[i][1];
ok=1;
}
}
if (!ok)
{
nn++;
prev[nn][0]=c1[i][0];
prev[nn][1]=c1[i][1];
}
}
//cadranul 2
nn=0;
for (i=0;i<=n2;i++)
{
ok=0;
for (j=1;j<=nn;j++)
{
if (c2[i][1]>=prev[j][1])
{
nr--;
prev[j][1]=c2[i][1];
ok=1;
}
}
if (!ok)
{
nn++;
prev[nn][0]=c2[i][0];
prev[nn][1]=c2[i][1];
}
}
//cadranul 3
nn=0;
for (i=0;i<=n3;i++)
{
ok=0;
for (j=1;j<=nn;j++)
{
if (c3[i][1]>=prev[j][1])
{
nr--;
prev[j][1]=c3[i][1];
ok=1;
}
}
if (!ok)
{
nn++;
prev[nn][0]=c3[i][0];
prev[nn][1]=c3[i][1];
}
}
//cadranul 4
nn=0;
for (i=0;i<=n4;i++)
{
ok=0;
for (j=1;j<=nn;j++)
{
if (c4[i][1]<=prev[j][1])
{
nr--;
prev[j][1]=c4[i][1];
ok=1;
}
}
if (!ok)
{
nn++;
prev[nn][0]=c4[i][0];
prev[nn][1]=c4[i][1];
}
}
fprintf(g,"%ld\n",nr);
fclose(f);
fclose(g);
return 0;
}