Cod sursa(job #2751047)

Utilizator cristivasileVasile George-Cristian cristivasile Data 13 mai 2021 23:20:30
Problema Patrate 3 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>
#include <set>
#include <bits/stdc++.h>

using namespace std;

ifstream f("patrate3.in");
ofstream g("patrate3.out");

set<pair<int, int>> puncte;

int n, nr;
float x, y;
int xd, yd;
int dx, dy;

int main() {

	f >> n;
	for (int i = 0; i < n; i++) {
		f >> x >> y;
		puncte.insert({ ceil(x * 10000), ceil(y * 10000) });	//se insereaza toate punctele intr-un set, transformate in int-uri 
	}


	for (auto i = puncte.begin(); i != puncte.end(); i++)
		for (auto j = puncte.begin(); j != puncte.end(); j++)
			if (i != j) {									//pentru fiecare punct i se verifica daca punctul j poate fi pe latura cu el (in ordine counter-clockwise) intr-un patrat
				xd = i->second - j->second;
				yd = j->first - i->first;
				//daca poate fi, atunci punctele de pe latura opusa trebuie sa fie gasite in setul de puncte
				if (puncte.find({ i->first + xd, i->second + yd }) != puncte.end() && puncte.find({ j->first + xd, j->second + yd }) != puncte.end())
					nr++;
			}

	//fiecare patrat va fi gasit de 4 ori, cate o data pentru fiecare punct.
	g << nr / 4;

}