Cod sursa(job #2392366)

Utilizator IoanaDraganescuIoana Draganescu IoanaDraganescu Data 29 martie 2019 22:06:53
Problema Trapez Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <iostream>
#include <fstream>
#include <cmath>
#include <algorithm>

using namespace std;

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

struct mirel
{
    int x, y;
}v[1005];
double p[1000005];

int main()
{
    int n, nr = 0, s = 1, stot = 0, d = 0, e = 0;
    fin >> n;
    for (int i = 1; i <= n; i++)
        fin >> v[i].x >> v[i].y;
    for (int i = 1; i < n; i++)
        for (int j = i + 1; j <= n; j++)
        {
            if (v[j].x - v[i].x != 0 && v[j].y - v[i].y != 0)
                p[++nr] = (double)(v[j].y - v[i].y) / (v[j].x - v[i].x);
            if (v[j].y - v[i].y == 0)
                d++;
            if (v[j].x - v[i].x == 0)
                e++;
        }
    sort(p + 1, p + nr + 1);
    for (int i = 2; i <= nr; i++)
        if (p[i] != 0)
    {
        if (p[i] == p[i - 1])
            s++;
        if (p[i] != p[i - 1] || i == nr)
        {
            stot += s * (s - 1) / 2;
            s = 1;
        }
    }
    cout << stot + d * (d - 1) / 2 + e * (e - 1) / 2 << '\n';
    return 0;
}