Saturday, August 20, 2016

UVa 1595 - Symmetry

Accepted date: 2016-08-20
Run Time: 0.010
Ranking (as of 2016-08-20): 76 out of 396
Language: C++

/*
  UVa 1595 - Symmetry

  To build using Visual Studio 2012:
    cl -EHsc -O2 UVa_1595_Symmetry.cpp
*/

#include <algorithm>
#include <cstdio>
using namespace std;

const int N_max = 1000;

struct dot {
  int x_, y_;

  dot() {}
  dot(int x, int y) : x_(x), y_(y) {}
  bool operator<(const dot &d) const {return (x_ != d.x_) ? x_ < d.x_ : y_ < d.y_;}
} dots[N_max];

int main()
{
  int T;
  scanf("%d", &T);
  while (T--) {
    int N;
    scanf("%d", &N);
    for (int i = 0; i < N; i++)
      scanf("%d %d", &dots[i].x_, &dots[i].y_);
    bool yes = true;
    if (N > 1) {
      sort(dots, dots + N);
      int s = dots[0].x_ + dots[N - 1].x_;
      for (int i = 0; i < N; i++)
        if (!binary_search(dots, dots + N, dot(s - dots[i].x_, dots[i].y_))) {
          yes = false; break;
        }
    }
    puts((yes) ? "YES" : "NO");
  }
  return 0;
}

No comments:

Post a Comment