计算几何入门,将所有的点排序遍历即可。
//UVA10585
#include <cstdio>
#include <map>
#include <algorithm>
using namespace std;
const int maxn = 10000 + 10;
typedef pair<int, int> P;
P point[maxn];
int main(int argc, char const *argv[]) {
int c;
scanf("%d", &c);
while (c--) {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d%d", &point[i].first, &point[i].second);
}
sort(point, point + n);
int mx = point[0].first + point[n-1].first;
int my = point[0].second + point[n-1].second;
bool ok = true;
for (int i = 0; i <= (n >> 1); i++) {
if (point[i].first + point[n-i-1].first != mx || point[i].second + point[n-i-1].second != my) {
ok = false;
break;
}
}
if (ok) {
puts("yes");
} else {
puts("no");
}
}
return 0;
}