Pagini recente » Cod sursa (job #1670040) | Cod sursa (job #2292776) | Istoria paginii utilizator/vasileambreiaj | Cod sursa (job #1592990) | Cod sursa (job #143800)
Cod sursa(job #143800)
#include<stdio.h>
#include<stdlib.h>
#define N 100
struct coordonate{
int x,y;
};
coordonate coord[N],panta[N*N];
int compara(const void*a,const void *b){
coordonate *aa=(coordonate*)a,*bb=(coordonate*)b;
coordonate ia=*aa,ib=*bb;
if (ia.x*ib.y>ia.y*ib.x)
return 1;
if (ia.x*ib.y<ia.y*ib.x)
return -1;
return 0;
}
int comparare(const void *a,const void *b){
float *aa=(float*)a,*bb=(float*)b;
float ia=*aa,ib=*bb;
if (ia>ib)
return 1;
if (ia<ib)
return -1;
return 0;
}
int main(){
int k=-1,n,i,j,s=0,t=1;
//float vect[N*N];
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
scanf("%d",&n);
for (i=0;i<n;++i)
scanf("%d%d",&coord[i].x,&coord[i].y);
for (i=0;i<n-1;++i)
for (j=i+1;j<n;++j){
++k;
panta[k].x=abs(coord[j].x-coord[i].x);
panta[k].y=abs(coord[j].y-coord[i].y);
//vect[k]=(float)(coord[i].x-coord[i].y)/(coord[j].x-coord[j].y);
}
qsort(panta,k+1,sizeof(panta[0]),compara);
//qsort(vect,k+1,sizeof(vect[0]),comparare);
t=1;
for (i=0;i<=k;++i){
if ((long long )panta[i].x*panta[i+1].y==(long long )panta[i].y*panta[i+1].x)
//if (vect[i]==vect[i+1])
++t;
else{
s+=t*(t-1)/2;
t=1;
}
//printf("%d %d\n",panta[i].x,panta[i].y);
}
printf("%d\n",s);
return 0;
}