Cod sursa(job #142886)

Utilizator toni2007Pripoae Teodor Anton toni2007 Data 25 februarie 2008 15:41:17
Problema Trapez Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#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 main(){
    int k=-1,n,i,j,s=0,t=1;
    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;
        }
    qsort(panta,k+1,sizeof(panta[0]),compara);
    t=1;
    for (i=0;i<=k;++i){
        if (panta[i].x*panta[i+1].y==panta[i].y*panta[i+1].x)
              ++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;
}