Pagini recente » Cod sursa (job #1374536) | Cod sursa (job #3279566) | Cod sursa (job #1686488) | Diferente pentru implica-te/arhiva-educationala intre reviziile 149 si 150 | Cod sursa (job #1433836)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("grupuri.in");
ofstream fout("grupuri.out");
const int NMax = 100005;
long long int v[NMax],n,k;
bool solve(long long int mid){
long long int a = 0;
for(int i = 1; i <= n; i++){
a += min(mid,v[i]);
}
if(a >= mid * k){
return true;
}
return false;
}
int main()
{
long long int sum = 0;
fin >> k >> n;
for(int i = 1; i <= n; i++){
fin >> v[i];
sum += v[i];
}
long long int lo,hi,ans = 0;
lo = 1;
hi = sum / k;
while(lo <= hi){
long long int mid = (lo + hi) / 2;
if(solve(mid)){
ans = mid;
lo = mid + 1;
} else {
hi = mid - 1;
}
}
fout << ans;
return 0;
}