Pagini recente » Cod sursa (job #1016016) | Cod sursa (job #1523497) | Cod sursa (job #584271) | Cod sursa (job #634627) | Cod sursa (job #3222936)
#include <fstream>
using namespace std;
ifstream f("grupuri.in");
ofstream g("grupuri.out");
const int nmax = 100005;
long long a[nmax];
int n, k;
bool merge(long long m){
long long sum = 0;
for(int i = 1; i <= n; i++){
sum += min(m, a[i]);
}
if(sum >= k * m){
return true;
}
else{
return false;
}
}
int main(){
ios::sync_with_stdio(0);
f.tie(0);
f >> k >> n;
long long sum = 0;
for(int i = 1; i <= n; i++){
f >> a[i];
sum += a[i];
}
long long sol = -1;
long long st = 1, dr = sum / k;
while(st <= dr){
long long m = (st + dr) / 2;
if(merge(m)){
st = m + 1;
sol = m;
}
else{
dr = m - 1;
}
}
g << sol << '\n';
}