Cod sursa(job #2622983)

Utilizator robertnanu_fmiNanu Robert-Ionut robertnanu_fmi Data 2 iunie 2020 13:05:52
Problema Patrate 3 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <bits/stdc++.h>
using namespace std;
unordered_set<int> H;
int n;
double x[1001],y[1001];
int g(double x,double y)
{
    int xx = round(x*10000),yy = round(y * 10000);
    return (xx * 3) ^ (yy * 5);
}
int main()
{
    ifstream f("patrate3.in");
    ofstream gout("patrate3.out");

    f >> n;
    for (int i = 1; i <= n; i++) {
        f >> x[i] >> y[i];
        x[i] += 10000;
        y[i] += 10000;
        H.insert(g(x[i],y[i]));
    }

    int sol = 0;
    for (int i = 1; i <= n-3; i++) {
        for (int j = i+1; j <= n; j++)
        {
            double x1,x2,y1,y2,xmid,ymid;
            xmid = (x[i] + x[j]) / 2;
            ymid = (y[i] + y[j]) / 2;
            x1 = xmid + y[i] - ymid; y1 = ymid + xmid - x[i];
            x2 = xmid + ymid - y[i]; y2 = ymid + x[i] - xmid;
            if (H.find(g(x2,y2)) != H.end() && H.find(g(x1,y1)) != H.end())
                sol++;
        }
        H.erase(g(x[i],y[i]));
    }

    gout << sol;
}