Cod sursa(job #1426481)

Utilizator Boss4321Andrei Theodore Marginean Boss4321 Data 29 aprilie 2015 19:40:31
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;

const double INFI = 2e9;
const double eps = 1e-12;

struct PUNCT {
    int n,m;
    void cit () {
        int a,b;
        scanf("%d%d",&a,&b);
        n = a, m = b;
    }
} v[1001];

double p[550000];

double panta (PUNCT a, PUNCT b) {

    int p,q;

    p=a.n-b.n;
    q=a.m-b.m;
    if (!p)
        return INFI + 1;
    return (double) q / p * 1.0;
}
int main()
{
    freopen("trapez.in","r",stdin);
    freopen("trapez.out","w",stdout);
    int n,i,j;
    scanf("%d",&n);
    for(i=1;i<=n;++i)
        scanf("%d",&v[i]);
    int k=1,l=1;
    long long t=0;
    for (i=1;i<=n;++i)
        for (j=i+1;j<=n;++j)
            p[k++] = panta(v[i],v[j]);
    sort (p+1, p+k);
    for (i=2;i<k;++i) {
        for (l=1;i<k&&fabs(p[i]-p[i+1])<eps;++i,++l);
        t += l * (l - 1) >> 1;
    }

    printf("%lld\n",t);
    return 0;
}