Cod sursa(job #323131)

Utilizator doru.nituNitu Doru Constantin doru.nitu Data 10 iunie 2009 21:00:24
Problema Trapez Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include<stdio.h>
long long i,j,n,nr,t;
long double m;

struct cord
{ long long x;
  long long y;
}a[1001];

struct punct
{ cord A;
  cord B;
} b[1000001];
     

int main()
{ freopen("trapez.in","r",stdin);
  freopen("trapez.out","w",stdout);
  scanf("%d",&n);
  for(i=1;i<=n;i++) scanf("%lld %lld",&a[i].x,&a[i].y);
  for(i=1;i<=n;i++) 
     for(j=i+1;j<=n;j++) { nr++;
                           b[nr].A.x=a[i].x;
                           b[nr].A.y=a[i].y;
                           b[nr].B.x=a[j].x;
                           b[nr].B.y=a[j].y;
                         }
for(i=1;i<=nr;i++)  for(j=i+1;j<=nr;j++)  if((b[i].A.x!=b[j].A.x||b[i].A.y!=b[j].A.y)&&(b[i].B.x!=b[j].B.x||b[i].B.y!=b[j].B.y) )
   { if((b[i].B.x-b[i].A.x)==0) m=0;
     else {     m=(float)(b[i].B.y -b[i].A.y)/(b[i].B.x-b[i].A.x);
                                               
                 if((b[j].B.x-b[j].A.x)==0) { if(m==0) t++;}                                               
                 else if( m==((float)(b[j].B.y -b[j].A.y)/(b[j].B.x-b[j].A.x))) t++;
          }     
   } 
 printf("%lld\n",t);                                                         
 fclose(stdin);
 fclose(stdout);
 return 0;                      
                         
}