func_code_string: #include <bits/stdc++.h>   int n, m, i, j;   int ord[200000], a0[200000];   bool use[200000];   long long a[200000];   long long k, p, t, q, s;   void qsort(int l, int r) {     int i, j, t, x;     i = l;     j = r;     x = ord[(l + r) / 2];     while (i < j) {       while (a[ord[i]] < a[x]) i++;       while (a[ord[j]] > a[x]) j--;       if (i <= j) {         t = ord[i];         ord[i] = ord[j];         ord[j] = t;         i++;         j--;       }     }     if (l < j) qsort(l, j);     if (i < r) qsort(i, r);   }   int main() {     while (scanf( %d%I64d , &n, &k) != EOF) {       for (i = 1; i <= n; i++) scanf( %I64d , &a[i]);       for (i = 1; i <= n; i++) ord[i] = i;       qsort(1, n);       p = n;       memset(use, 0, sizeof(use));       for (i = 1; i <= n; i++) {         if (k < (a[ord[i]] - a[ord[i - 1]]) * (n - i + 1)) break;         use[ord[i]] = true;         k -= (a[ord[i]] - a[ord[i - 1]]) * (n - i + 1);         s = a[ord[i]];       }       j = n - i + 1;       if (i == n + 1) {         if (k != 0) printf( -1 n );       } else {         for (i = 1; i <= n; i++)           if (!use[i]) {             a[i] -= k / j + s;           }         t = k % j;         for (i = 1; t != 0 && i <= n; i++)           if (!use[i]) {             if (a[i] == 1) {               use[i] = true;               a[i] == 1;             }             t--;           }         j = i;         q = 0;         for (i = j; i <= n; i++)           if (!use[i]) {             q++;             a0[q] = i;           }         for (i = 1; i < j; i++)           if (!use[i]) {             q++;             a0[q] = i;           }         for (i = 1; i < q; i++) printf( %d  , a0[i]);         printf( %d n , a0[q]);       }     }   }   