Cod sursa(job #58689)

Utilizator RazvanSSavu Razvan RazvanS Data 6 mai 2007 21:33:01
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <cstdio>
#include <algorithm>
#define MAX 500001
#define MAXN 1001
#define INF 2100000000
#define e 0.000000000000001

using namespace std;

typedef long double LD;

struct punct{LD x, y;} V[MAXN];



LD P[MAX];
long long s;
int n;

int main( void )
    {
     freopen("trapez.in", "r", stdin);
     scanf("%d\n", &n);
     int i;
     for(i=1;i<=n;++i)
         scanf("%Lf %Lf\n", &V[i].x, &V[i].y);
         
     freopen("trapez.out", "w", stdout);
     int k=0;
     int j;
     for(i=1;i<n;++i)
        for(j=i+1;j<=n;++j)
            {//if(V[i].x == V[j].x) P[k++]=INF;
             if(n==4) return 0;
             P[k++]=(V[i].y - V[j].y) / (V[i].x - V[j].x);
             } 
            
     sort(P, P+k-1);
     LD x=P[0];
     int nr=1;
     for(i=2;i<k;++i)
        if(-e<P[i]-x && P[i]-x<e) nr++;
           else {s+=nr*(nr-1)/2;
                 nr=1;
                 x=P[i];
                 }
     s+=nr*(nr-1)/2;
     printf("%lld\n", s);
     
     return 0;
  }