Cod sursa(job #1397132)

Utilizator tudor_bonifateTudor Bonifate tudor_bonifate Data 23 martie 2015 11:56:20
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <climits>

#define eps 1e-12

using namespace std;
int nr,nr1,i,j,n,sol;
double p[1000000];
struct punct
{
    int x;
    int y;
};
punct a[1001];
int main()
{
    freopen("trapez.in","r",stdin);
    freopen("trapez.out","w",stdout);
    scanf("%d\n",&n);
    for (i=1; i<=n; i++) scanf("%d %d",&a[i].x, &a[i].y);
    nr=nr1=0;
    for (i=1; i<n; i++) for (j=i+1; j<=n; j++)
        {
            if ((a[j].x-a[i].x)!=0)
                p[++nr]=((1.0*a[j].y)-a[i].y)/((1.0*a[j].x)-a[i].x);
            else p[++nr] = INT_MAX;
        }
    sort(p+1,p+nr+1);
    for (i=2; i<=nr; i++) if (p[i] - p[i-1] <= eps) nr1++;
    else
    {
        sol += nr1 * (nr1 - 1) / 2;
        nr1 = 1;
    }
    printf("%d",sol);
    return 0;
}