D-小红的数组操作_牛客周赛 Round 24 (nowcoder.com)
整型除法是向0取整!!!
不是向负无穷取整!!!
#include <iostream>
#include <string>
#include <stack>
#include <vector>
#include <set>
#include <map>
#include <unordered_map>
#include <unordered_set>
#include <algorithm>
#include <cstdlib>
#include <cstring>
#include <cmath>
#define ll long long
using namespace std;
const ll inf = 1e18;
const ll N = 1e5 + 10;
ll arr[N], n, k, x;
bool check(ll a) {
ll ret = 0;
for (int i = 0; i < n; i++) {
if (arr[i] <= a) continue;
ret += (arr[i] - a + x - 1) / x;
if (ret > k) return false;
}
return true;
}
int main() {
cin >> n >> k >> x;
for (int i = 0; i < n; ++i) cin >> arr[i];
ll l = -inf, r = inf;
while (l < r) {
// ll mid = l + (r - l) / 2;
ll mid = (l + r) / 2;
if (!check(mid)) l = mid + 1;
else r = mid;
}
cout << l;
return 0;
}