func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long int MAX = -1000000000000000000;   const long long int MIN = 1000000000000000000;   const long long int inf = 1000000000000000000;   const long long int KOK = 100000;   const long long int LOG = 30;   const long long int li = 105;   const long long int mod = 1000000007;   long long int n, m, cev, b, a[li], k, dp[105][100005], PS[li][li];   string s;   vector<int> v;   long long int f(long long int sira, long long int topl) {     long long int mn = inf;     if (topl <= 0) return 0;     if (sira > n) {       return inf;     }     if (~dp[sira][topl]) return dp[sira][topl];     for (int i = sira; i <= n; i++) {       mn = min(mn, f(i + 1, topl - PS[sira][i] + PS[sira][sira - 1]) + 1);     }     return dp[sira][topl] = mn;   }   int main() {     memset(dp, -1, sizeof(dp));     scanf( %lld %lld , &n, &m);     for (long long int i = 1; i <= n; i++) {       scanf( %lld , &a[i]);     }     sort(a + 1, a + n + 1);     reverse(a + 1, a + n + 1);     for (long long int i = 1; i <= n; i++) {       long long int at = 0;       for (long long int j = i; j <= n; j++) {         PS[i][j] = PS[i][j - 1] + max(a[j] - at, 0ll);         at++;       }     }     long long int yess = f(1, m);     if (yess >= inf) {       printf( -1 n );       return 0;     }     printf( %lld n , yess);     return 0;   }   