Cod sursa(job #2761004)

Utilizator MadalinaKopaczMadalina Kopacz MadalinaKopacz Data 30 iunie 2021 00:38:51
Problema Patrate 3 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <fstream>
#include <cmath>
#include <set>
using namespace std;
ifstream fin("patrate3.in");
ofstream fout("patrate3.out");

//coordonatele punctelor
set<pair <int, int>> c; 
pair<int, int> a[1005];
int N;
void Citire()
{
    float x, y;
    fin >> N;
    for (int i = 1; i <= N; ++i)
    {
        fin >> x >> y;

        x *= 10000;
        y *= 10000;
        a[i].first = int(round(x));
        a[i].second = int(round(y));

        c.insert(a[i]);
    }
}

bool VerificPatrat(pair <int, int> x, pair<int, int> y)
{
    int a, b;
    a = x.second - y.second;
    b = y.first - x.first; 

    //cautam latura paralela 
    pair<int, int> p1, p2;
    p1.first = x.first + a;  p1.second = x.second + b;
    p2.first = y.first + a;  p2.second = y.second + b;
    if (c.find({ x.first + a, x.second + b }) != c.end() && c.find({ y.first + a, y.second + b }) != c.end())    return 1;
    return 0;
}

int Rezultat()
{
    int ct = 0;
    for (int i = 1; i <= N; ++i)
        for (int j = 1; j <= N; ++j)
            if (i != j)
                if(VerificPatrat(a[i], a[j]))     
                     ct++;
    //numaram fiecare patrat de 4 ori pentru ca noi verificam mai sus pentru fiecare latura
    return ct / 4;
}

int main()
{
    Citire();
    fout << Rezultat();
    return 0;
}