Pagini recente » Borderou de evaluare (job #888924) | Cod sursa (job #1677303) | Cod sursa (job #2136204) | Cod sursa (job #1676149) | Cod sursa (job #2192612)
#include <stdio.h>
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define pll pair<ll, ll>
#define pdd pair<ld, ld>
#define all(x) (x).begin(), (x).end()
#define fi first
#define se second
const double kEps = 1e-4;
vector<double> x;
vector<double> y;
double dist(int i, int j) {
return (x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]);
}
bool eq(double a, double b) {
return fabs(a - b) < kEps;
}
int main() {
cin.sync_with_stdio(false);
ifstream cin("triang.in");
ofstream cout("triang.out");
int n;
cin >> n;
x.resize(n);
y.resize(n);
for (int i = 0; i < n; i++) {
cin >> x[i] >> y[i];
}
int ans = 0;
vector<int> d;
for (int i = 0; i < n; i++) {
d.clear();
for (int j = i + 1; j < n; j++) {
d.pb(dist(i, j));
}
for (int k = 0; k < d.size(); k++) {
int j = k;
while (eq(d[j], d[k])) {
j++;
}
int cnt = j - k;
ans += cnt * (cnt - 1) / 2;
k = j - 1;
}
}
cout << ans << '\n';
return 0;
}