Pagini recente » Cod sursa (job #253731) | Cod sursa (job #457415) | Cod sursa (job #1881887) | Simulare 36 | Cod sursa (job #2614)
Cod sursa(job #2614)
#include <stdio.h>
#define dim 1002
long n,i,j,k,s;
long x[dim],y[dim];
struct panta
{ int y, x;
}d[dim];
int imp(long ls,long ld);
void qsort(long ls,long ld);
int main ()
{ freopen ("trapez.in","r",stdin);
freopen ("trapez.out","w",stdout);
scanf("%ld",&n);
for(i=0;i<n;++i)
scanf("%ld%ld",&x[i],&y[i]);
for(i=0;i<n-1;++i)
{ for(j=i+1;j<n;++j)
{ d[++k].y=y[i]-y[j];
d[k].x=x[i]-x[j];
}
}
qsort(1,k);
for(i=1;i<k;++i)
{ if(d[i].y==d[i+1].x&&d[i].x==d[i+1].y)
++s;
}
printf("%ld",s);
fclose(stdin);fclose(stdout);
return 0;
}
void qsort(long ls,long ld)
{ long poz=imp(ls,ld);
if(poz-1>ls)
qsort(ls,poz-1);
if(ld>poz+1)
qsort(poz+1,ld);
}
int imp(long ls,long ld)
{ long dir,ii=0,jj=-1;
while(ls<=ld)
{ if(d[ls].y>d[ld].y)
{ panta aux=d[ls];
d[ls]=d[ld];d[ld]=aux;
dir=ii;
ii=-jj;
jj=-dir;
}
else
if(d[ls].y==d[ld].y)
if(d[ls].x>d[ld].x)
{ panta aux=d[ls];
d[ls]=d[ld];d[ld]=aux;
dir=ii;
ii=-jj;
jj=-dir;
}
ls+=ii;ld+=jj;
}
return ls;
}