Cod sursa(job #561897)

Utilizator acelasi7Tudor Maxim acelasi7 Data 21 martie 2011 22:15:39
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<stdio.h>
#include<fstream>
#include<climits>
#include<algorithm>
using namespace std;
#define nrn 1024
#define inf INT_MAX
#define ll long long

//freopen ("trapez.in","r",stdin);
//freopen ("trapez.out","w",stdout);

struct punct{ll x,y;}P[nrn];
double m[nrn*nrn];

double panta(int a,int b)
{
    if(P[a].x==P[b].x)
        return inf;
    return (double)(P[b].y-P[a].y)/(double)(P[b].x-P[a].x);
}
int main()
{
    int i,n,k=0,j;
    ll p,s=0;
    double cc;
    ifstream in("trapez.in");
    ofstream out("trapez.out");
    in>>n;
    //scanf("%d",&n);
    for(i=1;i<=n;++i)
        in>>P[i].x>>P[i].y;
        //scanf("%d%d",&P[i].x,&P[i].y);
    for(i=1;i<n;++i)
        for(j=i+1;j<=n;++j)
            {
                m[++k]=panta(i,j);
            }
    sort(m+1,m+k+1);
    cc=m[1];
    p=1;
    for(i=2;i<=k;++i)
    {
        if(cc==m[i])
            ++p;
        else
        {
            s+=p*(p-1)/2;
            cc=m[i];
            p=1;
        }
    }
    out<<s<<'\n';
    //printf("%d\n",s);
    return 0;
}