最简单逻辑求解

每走一步,最高-1,最矮+1,k步之后的数组是结果。
--------------------------------------------------------------------------------------------
#include<stdio.h>
int main()
{
    int n, k, tmp, s = 0, m;
    scanf("%d %d", &n, &k);
    int sz[n], szk[k][2];
    for (int i = 0; i < n; i++) {
        scanf("%d", &sz[i]);
    }
    for (int j = 0; j <= k; j++) {
        int max = sz[0], min = sz[0], maxi = 0, mini = 0;
        for (int i = 1; i < n; i++) {
            if (max < sz[i]) { max = sz[i]; maxi = i; }
            if (min > sz[i]) { min = sz[i]; mini = i; }

        }
        m = max - min;
        if (sz[maxi] == sz[mini]) { break; }
        if (sz[maxi] - sz[mini] == 1) { break; }
        szk[j][0] = maxi;
        szk[j][1] = mini;
        sz[maxi]--;
        sz[mini]++;
        s++;
    }
    if (s > k) { s--; }
    
    printf("%d %d\n", m, s);
    for (int i = 0; i <s; i++) {
        printf("%d %d\n", szk[i][0] + 1, szk[i][1] + 1);

    }
}