Cod sursa(job #2754281)

Utilizator MihaiLazar26Lazar Mihai MihaiLazar26 Data 25 mai 2021 16:15:21
Problema Patrate 3 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.35 kb
#include <iostream>
#include <fstream>
#include <set>
#include <cmath>
using namespace std;
ifstream fin("patrate3.in");
ofstream fout("patrate3.out");

#define NMAX 1010



int main()
{
    set<pair<int, int>> puncte;
    pair<int, int> vec[NMAX];
    int n, nrPatrate = 0;
    double x, y;

    fin>>n;
    for(int i = 0; i < n; i++)
    {
        fin>>x>>y;
        vec[i].first = round(x * 10000);
        vec[i].second = round(y * 10000);
        puncte.insert(vec[i]);
    }

    int x1,y1,x2,y2,x3,y3,x4,y4;

    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
            if(i != j)
            {
                x1 = vec[i].first;
                y1 = vec[i].second;
                x2 = vec[j].first;
                y2 = vec[j].second;

                /* calculez coordonatele unde ar trebui sa se afle colturile patratului
                care are coulturile in punctele (x1, y1) si (x2, y2)*/

                x3 = y1 - y2 + x2;
                y3 = x2 - x1 + y2;
                x4 = y1 - y2 + x1;
                y4 = x2 - x1 + y1;

                /* verific daca exista aceste colturi in multimea de puncte citite din fisier */
                if (puncte.find({x3, y3}) != puncte.end()
                    && puncte.find({x4, y4}) != puncte.end()) nrPatrate++;
            }
    fout<<nrPatrate / 4;
}