Pagini recente » Cod sursa (job #2592188) | Cod sursa (job #2339767) | Cod sursa (job #2696298) | Cod sursa (job #2818961) | Cod sursa (job #2761004)
#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;
}