Cod sursa(job #1805959)

Utilizator Vally77FMI Calinescu Valentin Gelu Vally77 Data 14 noiembrie 2016 18:27:22
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
//#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream ka("trapez.in");
ofstream ki("trapez.out");

const int N_MAX = 1000;

struct punct
{
    double x, y;
}puncte[N_MAX + 1];

int n, marime;
long long sol;
double pante[N_MAX * N_MAX + 1];

int main()
{
    ka >> n;
    for(int i = 1; i <= n; i++)
        ka >> puncte[i].x >> puncte[i].y;
    for(int i = 1; i <= n; i++)
    {
        for(int j = i + 1; j <= n; j++)
        {
            punct p1, p2;
            p1 = puncte[i];
            p2 = puncte[j];
            if(p1.x == p2.x)
                pante[++marime] = 1e18;
            else
                pante[++marime] = (p1.y - p2.y) / (p1.x - p2.x);
        }
    }
    sort(pante + 1, pante + marime + 1);
    int elemente = 1;
    for(int i = 2; i <= marime; i++)
    {
        if(pante[i] != pante[i - 1])
        {
            sol += (elemente * (elemente - 1)) / 2;
            elemente = 1;
        }
        else
            elemente++;
    }
    ki << sol;
}