Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- //#pragma GCC optimize("O3")
- #define count masloriy1489
- #define y1 jhgfds
- #define ll long long
- #define pb push_back
- #define eb emplace_back
- #define all(v) v.begin(), v.end()
- #define rep(i, n) for(ll i = 0; i < n; i++)
- using namespace std;
- //freopen("input.txt", "r", stdin);
- //freopen("output.txt", "w", stdout);
- int main(){
- ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
- #define int long long
- int n, m;
- cin >> n >> m;
- vector<int> a(n);
- int sum = 0;
- rep(i, n){
- cin >> a[i];
- sum += a[i];
- }
- if(sum < m){
- cout << -1;
- return 0;
- }
- sort(all(a));
- int l = 1, r = n;
- while(r - l > 1){
- int c = (l + r)>>1;
- vector<int> b(a);
- int now = m;
- int diff = 0;
- while(!b.empty() && now > 0){
- rep(i, c){
- if(b.empty())
- break;
- now = now - (b.back()-diff);
- b.pop_back();
- }
- diff++;
- }
- if(now <= 0)
- r = c;
- else
- l = c;
- }
- int c = l;
- vector<int> b(a);
- int now = m;
- int diff = 0;
- while(!b.empty() && now > 0){
- rep(i, c){
- if(b.empty())
- break;
- now -= (b.back()-diff);
- b.pop_back();
- }
- diff++;
- }
- if(now <= 0)
- c = l;
- else
- c = r;
- cout << c;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement