Pagini recente » Cod sursa (job #2180961) | Cod sursa (job #1369267) | Cod sursa (job #256730) | Cod sursa (job #2768072) | Cod sursa (job #2754281)
#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;
}