Pagini recente » Cod sursa (job #2162653) | Cod sursa (job #2513745) | Cod sursa (job #2908673) | Cod sursa (job #967205) | Cod sursa (job #2535761)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1100;
const double eps = 1e-5;
ifstream in("patrate3.in");
ofstream out("patrate3.out");
struct point {
double x, y;
bool operator < (const point& other) const {
return (abs(x - other.x) < eps ? y < other.y - eps : x < other.x - eps);
}
};
point pts[N];
set < point > s;
bool check(int a, int b) {
double xm = (pts[a].x + pts[b].x) / 2;
double ym = (pts[a].y + pts[b].y) / 2;
double delta_y = abs(ym - pts[a].y);
double delta_x = abs(xm - pts[a].x);
if (pts[a].y < pts[b].y) {
delta_x = -delta_x;
}
point new_x, new_y;
new_x.x = xm - delta_y;
new_x.y = ym - delta_x;
new_y.x = xm + delta_y;
new_y.y = ym + delta_x;
if (s.find(new_x) != s.end() && s.find(new_y) != s.end()) {
return true;
}
return false;
}
int main() {
int n, ans = 0;
in >> n;
for (int i = 1; i <= n; i++) {
in >> pts[i].x >> pts[i].y;
s.insert(pts[i]);
}
sort(pts + 1, pts + 1 + n);
for (int i = 1; i <= n; i++) {
for (int j = i + 1; j <= n; j++) {
ans += check(i, j);
}
}
out << ans / 2;
return 0;
}