Cod sursa(job #1745369)

Utilizator tziplea_stefanTiplea Stefan tziplea_stefan Data 21 august 2016 18:21:13
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <fstream>
#include <algorithm>
#define PCT 1005
#define VAL 1000005
#define INF 2000000000

using namespace std;

ifstream fin("trapez.in");
ofstream fout("trapez.out");

int N, i, j, M, nr;
int x[PCT], y[PCT];
long long ans;
long double v[VAL], a, b;

int main()
{
    fin >> N;
    for (i=1; i<=N; i++)
    {
        fin >> x[i] >> y[i];
        for (j=1; j<i; j++)
        {
            if (x[i]>x[j])
            {
                a=x[i]-x[j];
                b=y[i]-y[j];
            }
            else
            {
                a=x[j]-x[i];
                b=y[j]-y[i];
            }
           // fout << a << " " << b << " " << a / b << '\n';
            if (b==0)
              v[++M]=0.0000000000001;
            else
              v[++M]=a / b;
            //fout << i << " " << j << " " << v[M] << '\n';
        }
    }
    sort(v+1, v+M+1);
    nr=1;
    for (i=2; i<=M; i++)
    {
        if (v[i]==v[i-1])
          nr++;
        else
        {
            ans+=(1LL*nr*(nr-1)) / 2;
            nr=1;
        }
    }
    fout << ans << '\n';
    fin.close();
    fout.close();
    return 0;
}