Pagini recente » Cod sursa (job #2644808) | Cod sursa (job #1744923) | Cod sursa (job #3037636) | Cod sursa (job #1220491) | Cod sursa (job #350171)
Cod sursa(job #350171)
#include<stdio.h>
#include<stdlib.h>
#define N 1010
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=coord[j].x-coord[i].x;
panta[k].y=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;
}