Cod sursa(job #286113)

Utilizator crawlerPuni Andrei Paul crawler Data 23 martie 2009 15:11:25
Problema Trapez Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <cstdio>
#include <math.h>
#include <algorithm>

using namespace std;

#define Nmax 1024

int n, x[Nmax], y[Nmax], nr;
double a[Nmax*Nmax];

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);
          for (int j=1;j<i;++j)
               a[++nr] = atan2(x[j]-x[i],y[j]-y[i]);
     }

     sort(a+1,a+nr+1);

     a[0] = 666.6;
     a[++nr] = 666.6;

     int tmp=1;
     long long ret = 0;

     for (int i=1;i<=nr;++i)
     {
          if (abs(a[i]-a[i-1])>1e-17)
          {
                    if (tmp > 1)
                         ret += ((long long)tmp*((long long)tmp-1))/2;
                    tmp = 1;
          }
               else
          ++tmp;
     }     
     
     printf("%lld\n", ret);

     return 0;
}