Cod sursa(job #286122)

Utilizator crawlerPuni Andrei Paul crawler Data 23 martie 2009 15:16:02
Problema Trapez Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 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(y[j]-y[i],x[j]-x[i]);
     }

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

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

     long long ret = 0, tmp=1,A,B,C;

     for (int i=1;i<=nr;++i)
     {

          if (abs(a[i]-a[i-1])>1e-14)
          {
               A = tmp;
               B = tmp-1;
               C = A*B;
               C = C/2;
               if (C > 0) 
                    ret += C;
               tmp = 1;
          }
               else
          ++tmp;
     }     
     
     printf("%lld\n", ret);

     return 0;
}