Cod sursa(job #2192612)

Utilizator Al3ks1002Alex Cociorva Al3ks1002 Data 6 aprilie 2018 18:07:48
Problema Triang Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#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;
}