func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 100005;   long long cnt[N];   int main() {     long long n, k;     cin >> n >> k;     long long sum = 0, right = 0, left = 0;     for (int i = 0; i < n; i++) {       cin >> cnt[i];       sum += cnt[i];       right = max(right, cnt[i]);     }     if (sum == k) {       return 0;     } else if (sum < k) {       puts( -1 );       return 0;     }     while (left < right) {       sum = 0;       long long mid = (left + right) / 2;       for (int i = 0; i < n; i++) {         sum += min(cnt[i], mid);       }       if (sum < k)         left = mid + 1;       else if (sum > k)         right = mid - 1;       else {         left = right = mid;         break;       }     }     sum = 0;     for (int i = 0; i < n; i++) sum += min(cnt[i], left);     if (sum > k) left--;     sum = 0;     for (int i = 0; i < n; i++) {       sum += min(left, cnt[i]);       cnt[i] -= min(left, cnt[i]);     }     sum = k - sum;     int ind = 0;     vector<int> tmp, res;     for (ind = 0; ind < n && sum > 0; ind++) {       if (cnt[ind] > 0) {         cnt[ind]--;         sum--;         if (cnt[ind] > 0) tmp.push_back(ind + 1);       }     }     for (; ind < n; ind++)       if (cnt[ind] > 0) res.push_back(ind + 1);     for (int i = 0; i < (int)tmp.size(); i++) res.push_back(tmp[i]);     int len = (int)res.size();     for (int i = 0; i < len; i++) {       printf( %d%c , res[i], i == len - 1 ?   n  :    );     }     return 0;   }   