Cod sursa(job #283145)

Utilizator blalaLaura Banias blala Data 18 martie 2009 19:56:39
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <stdio.h>
#include <math.h>
#include <algorithm>

using namespace std;

double alfa[1000100];
int x[1024],y[1024], n;

double abs(double x)
{
     if (x>0) return x;
     return -x;     
}

int main()
{
     freopen("trapez.in","r",stdin);
     freopen("trapez.out","w",stdout);
     
     scanf("%d", &n);
     
     for (int i=1;i<=n;++i)
          scanf("%d%d", x+i,y+i);
     
     int cnt = 0;
          
     for (int i=1;i<=n;++i)
     for (int j=i+1;j<n;++j)
          alfa[++cnt] = atan2(abs(y[i]-y[j]),abs(x[i]-x[j]));
          
     sort(alfa+1,alfa+cnt+1);
     
     int tmp=1;
     
     long long ret=0;
     
     alfa[cnt+1] = 666;
     
     for (int i=2;i<=cnt+1;++i)
          if (abs(alfa[i]-alfa[i-1]) > (1e-15))
          ret += tmp*(tmp-1)/2,
          tmp = 0;
                else
          ++tmp;
     printf("%lld\n", ret);
     
     return 0;     
}