返回题解分享
讨论 / 题解分享/ 帖子详情

砍树 - 题解

#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
typedef pair<int,int> PII;  
using ll = long long;
using ULL = unsigned long long;
const int N = 1e6+5;

ll n ,m, a[N];

bool check(ll mid) {
    ll sum = 0;
    for (int i = 0; i < n; i++) 
        if (a[i] > mid) sum += a[i] - mid;
    return sum >= m;
}

inline void solve() { 
    cin >> n >> m;
    ll l = 0, r = 0;
    for (int i = 0; i < n; i++) {
        cin >> a[i];
        r = max(r,a[i]);
    }
    while (l < r) {
        ll mid = (l + r + 1) >> 1;
        if (check(mid)) l = mid;
        else r = mid -1;    
    }
    cout << l << endl;
}          

int main() { 
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int _ = 1; 
    //int _; cin >> _;
    while (_--) solve();
    return 0;
}
0 回复 0 转发 0 喜欢 5 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!