Cod sursa(job #2932766)

Utilizator euyoTukanul euyo Data 3 noiembrie 2022 21:31:00
Problema Trapez Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <bits/stdc++.h>

#define x first
#define y second

using namespace std;

ifstream fin( "trapez.in" );
ofstream fout( "trapez.out" );

const int DIM = 1005;

map<pair<int, int>, int> M; 
pair<int, int> v[DIM];

int main() {
  int n;
  
  fin >> n;
  for ( int i = 0; i < n; ++i ) {
	fin >> v[i].x >> v[i].y;
  }
  for ( int i = 0; i < n; ++i ) {
    for ( int j = i + 1; j < n; ++j ) {
	  pair<int, int> T = {v[i].x - v[j].x, v[i].y - v[j].y};
	  int d = __gcd(T.first, T.second);
	  int a = T.first / d, b = T.second / d;
	  ++M[{a, b}];
	  ++M[{-a, -b}];
	}
  }
  int res = 0;
  for ( int i = 0; i < n; ++i ) {
    for ( int j = i + 1; j < n; ++j ) {
	  pair<int, int> T = {v[i].x - v[j].x, v[i].y - v[j].y};
	  int d = __gcd(T.first, T.second);
	  int a = T.first / d, b = T.second / d;
	  res += M[{a, b}] - 1;
	}
  }
  fout << res / 2;
  fin.close();
  fout.close();
  return 0;
}