Cod sursa(job #1513579)

Utilizator LucianTLucian Trepteanu LucianT Data 29 octombrie 2015 18:51:34
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>
#include <climits>
#include <algorithm>
#define eps 0.0000000001
#define maxN 1005
using namespace std;
int n,x,y,i,j,sol,k,m;
struct punct{
    int abscisa,ordonata;
}v[maxN];
double panta[maxN*maxN];
int main()
{
    freopen("trapez.in","r",stdin);
    freopen("trapez.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d %d",&v[i].abscisa,&v[i].ordonata);
    }
    for(i=1;i<=n;i++)
    {
        for(j=i+1;j<=n;j++)
        {
            if(v[i].ordonata==v[j].ordonata)
                panta[++k]=INT_MAX;
            else panta[++k]=(double)(v[j].abscisa-v[i].abscisa)*1.0/(v[j].ordonata-v[i].ordonata);
        }
    }
    sort(panta+1,panta+k+1);
    m=1;
    for(i=2;i<=k;i++)
        if(panta[i]==panta[i-1]) m++;
        else sol+=m*(m-1)/2,m=1;
    sol+=m*(m-1)/2;
    printf("%d",sol);
    return 0;
}