Cod sursa(job #284643)

Utilizator jupanubv92Popescu Marius jupanubv92 Data 21 martie 2009 21:02:59
Problema Trapez Scor 100
Compilator cpp Status done
Runda contest01 Marime 0.96 kb
#include<stdio.h>
#define inf 99999999

double p[2000001];
long long x[1001],y[1001];
int nr,n;

void quick(long li, long ls)
{
 long i,j; double x,y;
 i=li; j=ls; x=p[(li+ls)/2];
 while (i<=j)
      {
       while (p[i]<x) i++;
       while (p[j]>x) j--;
       if (i<=j)
	 {
	  y=p[i]; p[i]=p[j]; p[j]=y;
	  i++; j--;
	 }
      }
 if (i<ls) quick(i,ls);
 if (j>li) quick(li,j);
}

int main()
{
  freopen("trapez.in","r",stdin);
  freopen("trapez.out","w",stdout);
  scanf("%d",&n);
  int i,j;
  for(i=1;i<=n;i++)
   scanf("%lld %lld",&x[i],&y[i]);
  for(i=1;i<n;i++)
    for(j=i+1;j<=n;j++)
     {
      if(x[j]-x[i]==0)
	p[++nr]=0;
       else if(y[j]-y[i]==0)
	    p[++nr]=inf;
      else p[++nr]=(double)(y[j]-y[i])/(x[j]-x[i]);
     }
  quick(1,nr);
  long long fin=0;
  for(i=1;i<=nr;i++)
   {int nrr=1;
    while(p[i]==p[i+1]&&i<=nr)
      {nrr++;i++;}
    fin+=(nrr*(nrr-1))/2;
   }
  printf("%lld",fin);
  return 0;
}