Codeforces Round #725 (Div. 3)B. Friends and Candies
给一个n个数字的数组, 问最少可以取多少个数字, 使得分配给别的数字(包括自己),后让数组的值全相等.
一共n个数组, 那么全相等, 肯定就是sum % n == 0 才可能. 不然怎么分都分不出来.
然后因为要分给别的数, 所以只需要找到比sum/n大的数字, 即可., 因为反正这些大数都要分了才能变成sum/n, 是吧…..脑筋急转弯
static class TaskB {
public void solve(int testNumber, InputReader in, OutputWriter out) {
int n = in.readInt();
int[] ary = in.readIntArray(n);
Arrays.sort(ary);
int sum = 0;
for (int a : ary)
sum += a;
if (sum % n != 0) {
out.printLine(-1);
return;
}
int count = 0;
int t = 0;
for (int i = 0; i < ary.length; i++) {
ary[i] -= sum / n;
if (ary[i] < 0)
t += ary[i];
}
for (int i = ary.length - 1; i >= 0; i--) {
if (t >= 0)
break;
t += ary[i];
count++;
}
out.printLine(count);
}
}