每个输入包含一个测试用例。每个测试用例的第一行包含一个整数M(1 <= M<= 100),接下来的一行包含M个整数ni(1 <= ni <= 100)。
输出一行表示最少需要移动多少次可以平分苹果,如果方案不存在则输出-1。
4 7 15 9 5
3
2 3 6
-1
/*
思路:这里有两种情况是不能实现评平均分配的
①总和不能被m整除
②总和可以被m整除,但是有某些组员距离平均值的差值不是偶数
当排除上面的情况之后,统计每个元素与平均值之间的差值的一半
最后把这个总和除以2,就是需要移动的次数,因为移动式成对的,一个数减少,就是添加到另一个数上面
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int m = Integer.parseInt(br.readLine());
String[] str = br.readLine().split(" ");
int[] arr = new int[m];
int sum = 0,avg = 0,count = 0;
for(int i = 0;i<m;i++){
arr[i] = Integer.parseInt(str[i]);
sum += arr[i];
}
if(sum %m != 0){
System.out.println(-1);
return;
}
else{
avg = sum / m;
for(int i = 0;i<m;i++){
int temp = Math.abs(arr[i] - avg);
if(temp %2 != 0){
System.out.println(-1);
return;
}else{
count += temp/2;
}
}
}
System.out.println(count/2);
}
} import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] record = new int[n];
int sum =0;
for (int i = 0; i < n; i++) {
record[i]=scanner.nextInt();
sum+=record[i];
}
if (sum%n!=0){
System.out.println(-1);
return;
}
int average= sum/n;
int count=0;
for (int i = 0; i < n; i++) {
int diff=record[i]-average;
if (diff%2!=0){
System.out.println(-1);
return;
}
if (diff>0){
count+=diff/2;
}
}
System.out.println(count);
}
}