ZZULIOJ 1146: キャンディーを食べる、ジャワ
質問の説明
ほほ、ついにスピークレスからすべてのキャンディーを勝ち取りました。ガルドンはキャンディーを食べるのが特別な趣味です。彼は同じキャンディーを 2 回続けて食べるのが好きではありません。最初にタイプ A のキャンディーを 1 つ食べて、次は別のキャンディーに変えるのが好きです。それぞれのフレーバーで、タイプ B のキャンディーを食べる、それだけです。しかし、ガルドンは、キャンディーをすべて食べることができるキャンディーを食べる順序があるかどうか知りません。それを計算するプログラムを書いてください。
入力
最初の行には整数 T があり、その後に T グループのデータが続き、各データ グループは 2 行を占めます。最初の行は整数 N (0 < N <= 1000000) で、キャンディーの種類を示します。2 行目は N 個の数字で、各種類のキャンディ Mi の数を表します (0 < Mi <= 109)。
出力
データのセットごとに、「はい」または「いいえ」を含む行を出力します。
サンプル入力コピー
2
3
4 1 1
5
5 4 3 2 1
サンプル出力コピー
No
Yes
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(bf.readLine());
for (int i = 0; i < T; i++) {
int n = Integer.parseInt(bf.readLine());
int[] a = new int[n];
String[] str = bf.readLine().split(" ");
for (int j = 0; j < n; j++) {
a[j] = Integer.parseInt(str[j]);
}
int mx = 0, sum = 0;
for (int c : a) {
sum += c;
mx = Math.max(mx, c);
}
bw.write(mx <= sum - mx + 1 ? "Yes\n" : "No\n");
}
bw.close();
}
}