一开始觉得题目不是很可做。。后来看看数据范围。。。定个3000000跑暴力好了。。。然后就水过了。。什么hash什么的完全用不到啊。。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[21];
int main()
{
freopen("test.in","r",stdin);
freopen("test.out","w",stdout);
int T,ci,maxf,minf,tmp1,tmp2,n;
scanf("%d",&T);
while (T--)
{
memset(a,0,sizeof(a));
scanf("%d",&n);
for (int i=1;i<=n;i++)
scanf("%d",&a[i]);
ci=0;
minf=400000000;
maxf=-400000000;
while (minf!=maxf&&ci<=3000000)
{
ci++;
minf=400000000;
maxf=-400000000;
for (int i=1;i<=n;i++)
{
if (a[i]>maxf) {maxf=a[i],tmp1=i;}
if (a[i]<minf) {minf=a[i],tmp2=i;}
}
if (maxf!=minf) {a[tmp1]=maxf-minf,a[tmp2]=maxf-minf;}
}
if (minf==maxf) printf("%d\n",maxf);
else printf("Nooooooo!\n");
}
return 0;
}