Pagini recente » Cod sursa (job #2146711) | Cod sursa (job #1301130) | Cod sursa (job #234416) | Cod sursa (job #2765802) | Cod sursa (job #81869)
Cod sursa(job #81869)
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
struct punct{long x,y,d;};
int compara(struct punct *x,struct punct *y)
{
if(x->d>y->d) return 1;
else if(x->d<y->d) return -1;
return 0;
}
int main()
{
long i,x,y,n,x0,y0,nr=0,ind=1,gasit=0;
struct punct v[50000],drum[50000];
FILE *f=fopen("pachete.in","r");
fscanf(f,"%li",&n);
fscanf(f,"%li",&x0);
fscanf(f,"%li",&y0);
for(i=0;i<n;i++)
{
fscanf(f,"%li %li",&x,&y);
v[i].x=x;
v[i].y=y;
v[i].d=abs(x-x0)+abs(y-y0);
}
qsort(v,n,sizeof(struct punct),compara);
drum[nr].x=v[0].x;
drum[nr].y=v[0].y;
drum[nr].d=v[0].d;
nr=1;
while(ind<n)
{
gasit=0;
for(i=0;i<nr;i++)
{
if(abs(v[ind].x-drum[i].x)+abs(v[ind].y-drum[i].y)+drum[i].d==v[ind].d)
{
drum[i].x=v[ind].x;
drum[i].y=v[ind].y;
drum[i].d=v[ind].d;
gasit=1;
break;
}
}
if(gasit==0) {
drum[nr].x=v[ind].x;
drum[nr].y=v[ind].y;
drum[nr].d=v[ind].d;
nr++;
}
ind++;
}
fclose(f);
f=fopen("pachete.out","w");
fprintf(f,"%i",nr);
fclose(f);
return 0;
}