Cod sursa(job #2260228)

Utilizator IoanaDraganescuIoana Draganescu IoanaDraganescu Data 14 octombrie 2018 17:10:10
Problema Trapez Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

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

struct gigi
{
    int x, y;
};
gigi a[1005];
gigi v[100005];
int p[100005];

int main()
{
    int n, k = 1;
    fin >> n;
    for (int i = 1; i <= n; i++)
        fin >> a[i].x  >> a[i].y;
    for (int q = 1; q < n; q++)
        for (int z = q + 1; z <= n; z++)
        {
            bool gigi = 0;
            int x1 = a[z].x, y1 = a[z].y, x2 = a[q].x, y2 = a[q].y;
            for (int i = 1; i <= k; i++)
                if ((long long)v[i].x * abs(y2 - y1) == (long long)v[i].y * abs(x2 - x1) && (v[i].x * abs(y2 - y1) != 0 || v[i].x == abs(x2 - x1)))
                {
                    p[i]++;
                    gigi = 1;
                    break;
                }
            if (gigi == 0)
            {
                k++;
                v[k].x = abs(x2 - x1);
                v[k].y = abs(y2 - y1);
                p[k]++;
            }
        }
    int s = 0;
    for (int i = 1; i <= k; i++)
        s = s + p[i] * (p[i] - 1) / 2;
    fout << s << '\n';
    return 0;
}