Cod sursa(job #2745702)

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

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

unordered_map<int, int> h; /// un hash ce contine elemente de forma abscisa : ordonata
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[a[i].first] = a[i].second;
    }
}





int main()
{
    citire();

    for(int i = 1; i <= n; i ++)
        for(int j = i + 1; j <= n; j ++){
        /// calculam coordonatele celorlalte 2 varfuri si vedem daca exista in hash
        int x, y;
        x = a[i].second - a[j].second;
        y = a[j].first - a[i].first;
        if(h[a[i].first + x] == a[i].second + y && h[a[j].first + x] == a[j].second + y)
            ct++;

    }

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