用multimap存储数据。
代码如下:
#include<iostream>
#include<cstdio>
#include<map>
#include<cmath>
using namespace std;
const int maxn=1e6+5;
multimap<int,int> mp;
int mid=0;
void print()
{
multimap<int,int>::iterator low,up,i,j;
for(i=mp.begin();i!=mp.end();++i)
{
int a,b;
a=(*i).first;
b=mid-a;
low=mp.lower_bound(b);
up=mp.upper_bound(b);
if(low==up)
{
printf("NO\n");
return;
}
else
{
int a0=(*i).second,b0,f=0;
for(j=low;j!=up;++j)
{
b0=(*j).second;
if(a0==b0)
{
f=1;
break;
}
}
if(!f)
{
printf("NO\n");
return;
}
}
}
printf("YES\n");
}
int main()
{
int N,T;
scanf("%d",&T);
while(T--)
{
scanf("%d",&N);
int mi=10001,ma=-10001,a,b;
for(int i=1;i<=N;i++)
{
scanf("%d%d",&a,&b);
pair<int,int> p(a,b);
if(a<mi) mi=a;
if(a>ma) ma=a;
mp.insert(p);
}//cout<<mp.size()<<' '<<mi<<' '<<ma<<endl;
mid=ma+mi;
print();
mp.clear();
}
return 0;
}