题目描述:
在星球争霸篮球赛对抗赛中,强大的宇宙战队,希望每个人都能拿到MVP。
MVP的条件是,单场最高分得分获得者,可以并列,所以宇宙战队决定在比赛中,尽可能让更多的队员上场,且让所有有得分的队员得分都相同。
然而比赛过程中的每一分钟的得分都只能由某一个人包揽。
输入描述:
输入第一行为一个数字t,表示有得分的分钟数( 1 <= t <= 50),第二行为t个数字,代表每一分钟的得分p(1 <= p <= 50)
输出描述:
输出有得分的队员都是MVP时最少的MVP得分。
补充说明:
收起
示例1
输入:
9 5 2 1 5 2 1 5 2 1
输出:
6
说明:
样例解释:一共4人得分,分别都为6分
5 + 1
5 + 1
5 + 1
2 + 2 + 2
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int sum = 0;
int num = scanner.nextInt();
int[] nums = new int[num];
for (int i = 0; i < num; i++) {
nums[i] = scanner.nextInt();
sum += nums[i];
}
Arrays.sort(nums);
int result = num;
while (true) {
if (sum % result != 0) {
result--;
continue;
}
int avg = sum / result;
if (avg < nums[num-1]) {
result--;
continue;
}
boolean flag = false;
for (int i = 0; i < result; i++) {
int val = 0;
for (int j = num - 1; j >= 0; j--) {
if (nums[j] < 0) {
continue;
}
if (val + nums[j] <= avg) {
val += nums[j];
nums[j] -= 100;
if (val == avg) {
break;
}
}
}
if (val != avg) {
flag = true;
break;
}
}
if (flag) {
for (int i = 0; i < num; i++) {
if (nums[i] < 0) {
nums[i] += 100;
}
}
result--;
continue;
}
System.out.println(avg);
return;
}
}