Cod sursa(job #2745720)

Utilizator MateiDorian123Nastase Matei MateiDorian123 Data 26 aprilie 2021 22:19:38
Problema Patrate 3 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("patrate3.in");
ofstream fout("patrate3.out");

set<pair <int, int>> h; /// nu era bun unordered map pt ca puteam avea mai multe puncte cu aceeasi abscisa dar ordonate diferite
int n, ct;
pair<int, int> a[1005];




void citire(){
    double x,y;
    fin>>n;
    for(int i = 1; i <= n; ++ i){
        fin>>x>>y;
        a[i].first = round(x * 10000);
        a[i].second = round(y * 10000);
        h.insert(a[i]);
    }
}


inline bool square(pair<int,int> a, pair<int,int> b)
{
    /// calculam coordonatele celorlalte 2 puncte si verificam daca sunt egale
    int x, y;

    y = b.first - a.first;
    x = a.second - b.second;
    if (h.find({a.first+x, a.second+y}) != h.end() && h.find({b.first+x, b.second+y}) != h.end())
        return 1;
    return 0;
}



int main()
{
    citire();

    for(int i = 1; i <= n; i ++)
        for(int j = 1; j <= n; j ++)
        if(i != j && square(a[i],a[j]))
            ct++;

    fout<<ct/4; /// fiecare patrat este numarat de 4 ori
    return 0;
}