Cod sursa(job #919745)

Utilizator Stefex09Stefan Teodorescu Stefex09 Data 19 martie 2013 19:58:45
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>

using namespace std;

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

const double EPS = 1e-5;

struct point
{
    int x, y;
} V[1010];

double Pante[500010];

inline double panta (const point &A, const point &B)
{
    if (A.x == B.x)
        return 1e9;

    return (double) (B.y - A.y) / (B.x - A.x);
}

inline bool paralele (const double &A, const double &B)
{
    return (fabs (A - B) < EPS);
}

int main()
{
    int N, i, j, x, y, K = 0, start, Ans = 0;

    in >> N;

    for (i = 1; i <= N; i ++){
        in >> x >> y;
        V[i].x = x;
        V[i].y = y;

        for (j = 1; j < i; j ++)
            Pante[++ K] = panta (V[i], V[j]);
    }

    sort (Pante + 1, Pante + K + 1);

    for (i = 1; i <= K; i ++){
        start = i;
        i ++;

        while (Pante[start] == Pante[i] && i <= K)
            i ++;

        Ans += (i - start) * (i - start - 1) / 2;
        i --;
    }

    out << Ans;

    return 0;
}