每个测试文件均包含多组测试数据。第一行输入一个整数
代表数据组数,每组测试数据描述如下:
第一行输入一个整数
代表卡牌种类数。
第二行输入
个整数
代表每种卡牌数量。
除此之外,保证每一组测试数据的卡牌总数之和不小于
;单个测试文件的
之和不超过
。
对于每一组测试数据,如果没有必胜策略,直接输出
;否则,在单独的一行上输出一个整数,代表你至少需要预知多少张卡牌,才能保证你不会输。
3 2 1 1 1 10 2 2 3
0 -1 3
对于第一组测试数据,只有两张卡牌,且各不相同,直接翻开即可。
对于第二组测试数据,由于卡牌种类唯一,不管怎么翻都会输。
import java.util.Scanner;
import java.util.Arrays;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int T = in.nextInt();
in.nextLine();
for(int i = 0;i < T;i++){
int n = in.nextInt();
in.nextLine();
int[] arr = new int[n];
for(int j = 0;j < n;j++){
arr[j] = in.nextInt();
}
in.nextLine();
if(n == 1){
System.out.println("-1");
}else{
int tmp = 0;
for(int k = 0;k < arr.length;k++){
if(arr[k] == 1){
tmp++;
}
}
if(tmp == arr.length){
System.out.println("0");
}else{
Arrays.sort(arr);
int num = 0;
for(int l = 0;l < arr.length;l++){
if(arr[l] == 1){
num++;
}
}
if(num == arr.length - 1){
System.out.println(arr[arr.length - 1] - 1);
}else{
System.out.println(arr[arr.length - 1]);
}
}
}
}
}
in.close();
}
}