塔那一题
有没有谁能解答一下为什么通过为0……本地一点问题没有啊
思路也是最高的移动到最低的。
#include <stdio.h>
int main() {
int n, k, i, j, s, m, minIndex, maxIndex, minHeight, maxHeight;
int arr[100];
int opArr[2000];
while(scanf("%d %d", &n, &k) != EOF) {
int l = 0;
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
for (i = 0; i < k; i++) {
minIndex = 0;
minHeight = arr[0];
maxIndex = 0;
maxHeight = arr[0];
for (j = 0; j < n; j++) {
if (arr[j] > maxHeight) {
maxHeight = arr[j];
maxIndex = j;
}
if (arr[j] < minHeight) {
minHeight = arr[j];
minIndex = j;
}
}
if (maxHeight - minHeight < 2) {
break;
} else {
arr[maxIndex] -= 1;
arr[minIndex] += 1;
maxHeight -= 1;
minHeight += 1;
opArr[l] = maxIndex + 1;
opArr[l+1] = minIndex + 1;
l += 2;
}
}
s = maxHeight - minHeight;
m = i;
printf("%d %d\n", s, m);
l = 0;
for (i = 0; i < m; i++) {
printf("%d %d\n",opArr[l], opArr[l+1]);
l += 2;
}
}
return 0;
}