Cod sursa(job #6966)

Utilizator crizpMihaila Cristi crizp Data 21 ianuarie 2007 11:10:57
Problema Pachete Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda 1, Clasa a 10-a Marime 1.26 kb
#include<fstream.h>
#include<math.h>
long x[2000],y[2000];
int cadran(int a, int b, int x, int y)
	{if(a-x<=0&&b-y<=0) return 1;
	if(a-x>=0&&b<y<=0) return 2;
	if(a-x>0&&b-y>0) return 3;
	if(a-x<0&&b-y>0) return 4;
	}
int main()
{long dist[2000],a=0,b=0,aux=0;
int n=0;
memset(dist,0,sizeof(dist));
ifstream f("pachete.in");
ofstream g("pachete.out");
f>>n;
f>>a>>b;
for(int i=1; i<=n; i++)
	{f>>x[i];
	f>>y[i];
	dist[i]=abs(a-x[i])+abs(b-y[i]);}
int k=1;
while(k)
	{k=0;
	for(i=1; i<n; i++)
		if(dist[i]<dist[i+1]){aux=dist[i];
				       dist[i]=dist[i+1];
				       dist[i+1]=aux;
				      aux=x[i];
				       x[i]=x[i+1];
				       x[i+1]=aux;
				       aux=y[i];
				       y[i]=y[i+1];
				       y[i+1]=aux;
				       k=1;}
	}
k=0; int c=0;
for(i=1; i<=n; i++)
   if(x[i]>0)
	{c=cadran(a,b,x[i],y[i]);
	for(int j=i+1; j<=n; j++)
	    if(x[j]>0)
		if(c==cadran(a,b,x[j],y[j]) )
			{if(c==1)
				if(x[j]<=x[i]&&x[j]>=a&&y[j]<=y[i]&&y[j]>=b)
					x[j]=-1;
			 if(c==2)
				if(x[j]>=x[i]&&x[j]<=a&&y[j]<=y[i]&&y[j]>=b)
					x[j]=-1;
			 if(c==3)
				if(x[j]>=x[i]&&x[j]<=a&&y[j]>=y[i]&&y[j]<=b)
					x[j]=-1;
			 if(c==4)
				if(x[j]<=x[i]&&x[j]>=a&&y[j]>=y[i]&&y[j]<=b)
					x[j]=-1;
			 }



	k++;}
g<<k;
return 0;}