
解析:
从大到小枚举说谎人的个数x,然后查看是否有 x个人说谎即可。
- #include
- 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;
- }