Cod sursa(job #286118)

Utilizator crawlerPuni Andrei Paul crawler Data 23 martie 2009 15:13:02
Problema Trapez Scor 10
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(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;

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

     return 0;
}