A题:A. Trust Nobody
观察到n很小,所以可以直接枚举说谎者的数量,如果这个人说至少li个人说谎,而且li大于你枚举的说谎人数说明这个人说谎,当说谎人数和你枚举的人数一直即可,如果没有则没有可能
#include <bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int n;
int a[N];
int wa;
bool flag;
void solve()
{
flag=0;
wa=0;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a+1,a+1+n);
for(int i=0;i<=n;i++)
{
wa=0;
for(int j=1;j<=n;j++)
{
if(a[j]>i)
wa++;
}
if(wa==i)
{
cout<<wa<<endl;
flag=1;
break;
}
}
if(!flag)
cout<<-1<<endl;
}
int main()
{
int T;
cin>>T;
//T=1;
while(T--)solve();
return 0;
}