https://codeforces.com/contest/1084/problem/B
题意为他有n个杯子,然后你需要倒出来l升水,现在需要求能杯子里边倒出那么多水之后,剩下的杯子里边的水的的最小值。
先判断这些水能不能充满水桶。如果能的话,可以先求出最少的杯子里边的值然后判断,每杯水与最小值的水之间的差值能否使桶充满。
#include<iostream>
#include<math.h>
using namespace std;
long long a[1005];
long long sum=0;
long long MIN=0x3f3f3f3f;
int main(){
long long n,l;
cin>>n>>l;
for(int i=0;i<n;i++){
cin>>a[i];
sum+=a[i];
MIN=min(a[i],MIN);
}
if(sum<l){
cout<<-1<<endl;
return 0;
}
else if(sum==l){
cout<<0<<endl;
return 0;
}
else{
long long q=0;
for(int i=0;i<n;i++){
q+=abs(a[i]-MIN);
}
if(q>=l){
cout<<MIN<<endl;
return 0;
}else{
long long xx=l-q;
long long lev=ceil(1.0*xx/n);
cout<<MIN-lev<<endl;
}
}
return 0;
}