Pagini recente » Cod sursa (job #1001983) | Cod sursa (job #1922778) | Cod sursa (job #952007) | Cod sursa (job #527770) | Cod sursa (job #2491306)
#include <bits/stdc++.h>
#define NMAX 100005
using namespace std;
ifstream f ("grupuri.in");
ofstream g ("grupuri.out");
long long n , k;
long long a[NMAX];
bool inline ok(long long mij)
{
long long s = 0 , i;
for(i = n ; i >= 1 ; i--)
{
if(a[i] >= mij)
s += mij;
else s += a[i];
}
return s >= mij * k;
}
long long cb(long long s)
{
long long st = 1 , dr = s , mij = 0 , ans = 0;
while(st <= dr)
{
mij = (dr - st) / 2 + st;
if(ok(mij) == true)
{
ans = mij;
st = mij + 1;
}
else dr = mij - 1;
}
return ans;
}
int main()
{
long long s = 0 , i;
f >> k >> n;
for(i = 1 ; i <= n ; i++)
f >> a[i] , s += a[i];
g << cb(s);
return 0;
}