Problem - 1826A - Codeforces
解析:
从大到小枚举说谎人的个数x,然后查看是否有 x个人说谎即可。
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+5;
int t,n,a[N];
signed main(){
scanf("%lld",&t);
while(t--){
scanf("%lld",&n);
int res=0;
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
}
int f=0;
for(int i=n;i>=0;i--){
int cnt=0;
for(int j=1;j<=n;j++){
if(a[j]>i) cnt++;
}
if(cnt==i){
printf("%lld\n\n",i);
f=1;
break;
}
}
if(!f) printf("-1\n\n");
}
return 0;
}