数组操作
Description
小红拿到了一个数组,她每次可以进行如下操作:
选择一个数,使其减去
小红希望
Input
数据范围:
Output
一个整数,代表
Sample Input
5 3 5
4 3 11 2 1
Sample Output
3
Notes
第一个数操作
Solution
Code
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,k,x,a[100010];
bool check(int mid){
int cnt=0;
for(int i=1;i<=n;i++){
if(a[i]>mid)cnt+=(a[i]-mid+x-1)/x;
if(cnt>k)return false;
}
return true;
}
signed main(){
cin>>n>>k>>x;
for(int i=1;i<=n;i++)cin>>a[i];
int l=-1e18,r=1e9;
while(l<r){
int mid=l+r-1>>1;
if(check(mid)) r=mid;
else l=mid+1;
}
cout<<r<<'\n';
}