【UVA】1595 Symmetry(模拟)
题目
分析
理清思路,上模拟。
代码
#include <bits/stdc++.h>
using namespace std;
const int maxn=10005,INF=1<<15;
int vis[maxn],leftx,rightx,x[maxn],y[maxn],t,n;
void init()
{
memset(vis,0,sizeof(vis));
leftx=INF;rightx=-INF;
}
int main()
{
scanf("%d",&t);
while(t--){
init(); scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d%d",&x[i],&y[i]);
leftx=min(leftx,x[i]);rightx=max(rightx,x[i]);
}
int mid=leftx+rightx,sym=1;
for(int i=0;i<n;i++)
{
if(!vis[i])
{
int ok=0;
for(int j=0;j<n;j++)
{
if(!vis[j])
{
if(x[i]+x[j]==mid && y[i]==y[j]){ok=1;vis[j]=1;break;}
}
}
if(!ok){sym=0;puts("NO");break;}
}
vis[i]=1;
}
if(sym) puts("YES");
}
return 0;
}