Cod sursa(job #1360824)

Utilizator Alexa2001Alexa Tudose Alexa2001 Data 25 februarie 2015 18:11:47
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <cstdio>
#include <vector>
#include <algorithm>
#define eps 0.000000001
#define mp make_pair

using namespace std;
long long result=0LL;
int x,y,i,j,n,nr;
vector<double> a;
vector<pair<int,int> > b;

double panta(int x,int y)
{
    int X,Y;

    X=b[i].first-b[j].first;
    Y=b[i].second-b[j].second;

    return (double)Y/X*1.0;
}

int main()
{
    freopen("trapez.in","r",stdin);
    freopen("trapez.out","w",stdout);

    scanf("%d",&n);

    for(i=1;i<=n;++i)
    {
        scanf("%d%d",&x,&y);
        ++x;++y;b.push_back(mp(x,y));
    }

    for(i=1;i<n;++i)
    for(j=i+1;j<=n;++j)
    a.push_back(panta(i,j));

    sort(a.begin(),a.end());

    for(i=1;i<=n*n;++i)
    {
        nr=0;
        while(a[i]-a[i+1]<eps && a[i+1]-a[i]<eps)
        {
            ++nr;
            if(i+1==n*n) break;
            ++i;
        }
        result+=1LL*nr*(nr-1)/2;
    }


    printf("%lld\n",result);

    return 0;
}