Cod sursa(job #1226418)

Utilizator ccygnusMaygnus Pop ccygnus Data 5 septembrie 2014 13:36:00
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
#define inf 1000000000
#define eps 1.e-14
struct point
{
    int x,y;
};
double panta(point a,point b)
{
    if (fabs(a.x-b.x)<eps)
        return inf;
    else
        return (double)(b.y-a.y)/(b.x-a.x);
}
point v[1001];
double pante[1000005];
int main()
{
    freopen("trapez.in","r",stdin);
    freopen("trapez.out","w",stdout);
    int n,i,nr=0,tx,ty,rez=0,num=1,j;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        scanf("%d%d",&v[i].x,&v[i].y);
    for(i=1;i<n;i++)
        for(j=i+1;j<=n;j++)
            pante[++nr]=panta(v[i],v[j]);
    sort(pante+1,pante+nr+1);
    pante[++nr]=(double)inf;
    for(i=2;i<=nr;i++)
        if (pante[i]==pante[i-1])
            num++;
        else
            {
            rez=rez+num*(num-1)/2;
            num=1;
            }
    printf("%d\n",rez);
return 0;
}