Cod sursa(job #54045)

Utilizator petrecgClinciu Glisca Petre petrecg Data 23 aprilie 2007 23:36:12
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <stdio.h>
long x[1001],y[1001],a[1000000],b[1000000],n,i,j,c,l;
long double d[1000000],e;
long long nr;
long cmmdc(long v,long w)
{long r;
 while(w){r=v%w;v=w;w=r;}
 return v;
}
int main()
{freopen("trapez.in","r",stdin);
 freopen("trapez.out","w",stdout);
 fscanf(stdin,"%ld",&n);
 for(i=1;i<=n;i++)
  {fscanf(stdin,"%ld%ld",&x[i],&y[i]);
   for(j=1;j<i;j++)
    {a[++l]=y[i]-y[j];b[l]=x[i]-x[j];
     d[l]=(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]);
     c=cmmdc(a[l],b[l]);
     if(c){a[l]/=c;b[l]/=c;}
     if(a[l]*b[l]<0){if(a[l]>0)a[l]=-a[l];if(b[l]<0)b[l]=-b[l];}
    }
  }
 for(i=1;i<l;i++)
  for(j=i+1;j<=l;j++)
   {if(a[i]>a[j]){c=a[i];a[i]=a[j];a[j]=c;c=b[i];b[i]=b[j];b[j]=c;e=d[i];d[i]=d[j];d[j]=e;}
	   else if(a[i]==a[j]&&b[i]>b[j]){c=b[i];b[i]=b[j];b[j]=c;e=d[i];d[i]=d[j];d[j]=e;}
   }
 for(i=2;i<=n;i++)
  {if(a[i]==a[i-1]&&b[i]==b[i-1])
    {nr++;if(d[i]==d[i-1])nr++;}
  }
 fprintf(stdout,"%lld",nr);
 fclose(stdin);fclose(stdout);
 return 0;
}