Cod sursa(job #995342)

Utilizator Al3ks1002Alex Cociorva Al3ks1002 Data 8 septembrie 2013 18:20:44
Problema Trapez Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<cstdio>
#include<algorithm>
using namespace std;
const int NMAX = 1005;
const int INF = 1<<30;
const double eps = 0.000000000001;
int N,i,j,A,B,C,SOL,Cnt; double M[NMAX*NMAX];
struct Point {int X,Y;} P[NMAX];
int main()
{
    freopen("trapez.in","r",stdin);
    freopen("trapez.out","w",stdout);
    scanf("%d",&N);
    for(i=1;i<=N;i++)
    {
        scanf("%d",&P[i].X);
        scanf("%d",&P[i].Y);
    }
    for(i=1;i<N;i++)
        for(j=i+1;j<=N;j++)
        {
            A=P[j].Y-P[i].Y;
            B=P[j].X-P[i].X;
            if(!B) {M[++C]=INF; continue;}
            M[++C]=(double)A/B;
        }
    sort(M+1,M+C+1);
    for(i=1;i<=C;i++)
    {
        for(Cnt=1,j=i+1;j<=C;j++,Cnt++)
            if(M[j]-M[i]>eps) break;
        SOL+=(Cnt*(Cnt-1))/2;
    }
    printf("%d\n",SOL);
    return 0;
}