Cod sursa(job #2292852)

Utilizator miruna1224Floroiu Miruna miruna1224 Data 30 noiembrie 2018 02:46:12
Problema Trapez Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

const int M = 1000010;

struct Punct
{
    double x, y;
};

int main()
{
    int n, i, j, k, sol, x, N;
    double *v;
    //double v[M];
    Punct *p;
    // Punct p[1010];

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

    in >> n;
    p = new Punct [n+1];
    for (i = 0; i < n; i ++)
        in >> p[i].x >> p[i].y;

    N = n*n;
    v = new double [N+1];
    k = 0;
    for (i = 0; i < n; i++)
        for(j = i+1; j < n ; j ++)
            v[k++] = (double)(p[j].x - p[i].x) / (p[j].y- p[i].y);

    sort (v, v+k);

    sol = 0;

    for ( i = 0; i < k; i++)
    {
        x = 1;
        while (i < k && v[i] == v[i+1])
        {
            i++;
            x++;
        }
        if ( x % 2 == 0 )
            sol += (x/2)*(x-1);
        else sol += x*((x-1)/2);
    }

    out << sol;

    in.close();
    out.close();

    delete p;
    delete v;

    return 0;
}