Cod sursa(job #2357589)

Utilizator rares404AlShaytan - Balasescu Rares rares404 Data 27 februarie 2019 16:14:55
Problema Triang Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <bits/stdc++.h>
#define DN 1505
#define x first
#define y second

typedef std::pair<double, double> pii ;

int n, rez ;
pii p[DN] ;
double r32 = sqrt(3.0) / 2 ;

bool cmp(pii a, pii b) {
  if (fabs(a.x - b.x) < 1e-5) {
    if (fabs(a.y - b.y) < 1e-5)
      return 0 ;
    return a.y < b.y ; }
  return a.x < b.x ; }

inline int cauta(pii c) {
  if (std::binary_search(p, p + n, c, cmp))
    return 1 ;
  return 0  ; }

int main() {
  freopen("triang.in", "r", stdin)  ;
  freopen("triang.out", "w", stdout)  ;
  scanf("%d", &n)  ;
  int i, j ;
  for (i = 0 ; i < n ; ++i)
    std::cin >> p[i].x >> p[i].y  ;
  std::sort(p, p + n, cmp) ;
  for (i = 0 ; i < n ; ++ i)
    for (j = i + 1 ; j < n ; ++ j) {
      pii curr ;
      curr.x = (p[i].x + p[j].x) * 0.5 - r32 * (p[j].y - p[i].y) ;
      curr.y = (p[i].y + p[j].y) * 0.5 + r32 * (p[j].x - p[i].x) ;
      rez += cauta(curr) ;
      curr.x = (p[i].x + p[j].x) * 0.5 + r32 * (p[j].y - p[i].y) ;
      curr.y = (p[i].y + p[j].y) * 0.5 - r32 * (p[j].x - p[i].x) ;
      rez += cauta(curr) ; }
  printf("%d", rez / 3)  ;
  return 0 ; }