Cod sursa(job #796079)

Utilizator RaduDoStochitoiu Radu RaduDo Data 10 octombrie 2012 16:36:47
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
long long M,k,n,i,OX,ct,j;
double panta[10005*1005/2],x[1500],y[1500];
int main()
{
    freopen("trapez.in","r",stdin);
    freopen("trapez.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;++i)
        scanf("%lf%lf",&x[i],&y[i]);
    for(i=1;i<n;++i)
        for(j=i+1;j<=n;++j)
            if(x[i]==x[j]) OX++;
            else
                panta[++k]=(y[j]-y[i])/(x[j]-x[i]);
    sort(panta+1,panta+k+1);
    ct=0;M=0;
    for(i=1;i<k;++i)
    if(panta[i]==panta[i+1])
        ct++;
    else
    {
        M+=ct*(ct+1)/2;
        ct=0;
    }
    M+=ct*(ct+1)/2+OX*(OX-1)/2;
    printf("%d\n",M);
    return 0;
}