Pagini recente » Cod sursa (job #270875) | Cod sursa (job #1360611) | Cod sursa (job #445671) | Cod sursa (job #2339783) | Cod sursa (job #2745720)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("patrate3.in");
ofstream fout("patrate3.out");
set<pair <int, int>> h; /// nu era bun unordered map pt ca puteam avea mai multe puncte cu aceeasi abscisa dar ordonate diferite
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.insert(a[i]);
}
}
inline bool square(pair<int,int> a, pair<int,int> b)
{
/// calculam coordonatele celorlalte 2 puncte si verificam daca sunt egale
int x, y;
y = b.first - a.first;
x = a.second - b.second;
if (h.find({a.first+x, a.second+y}) != h.end() && h.find({b.first+x, b.second+y}) != h.end())
return 1;
return 0;
}
int main()
{
citire();
for(int i = 1; i <= n; i ++)
for(int j = 1; j <= n; j ++)
if(i != j && square(a[i],a[j]))
ct++;
fout<<ct/4; /// fiecare patrat este numarat de 4 ori
return 0;
}