Pagini recente » Cod sursa (job #1436219) | Clasamentul arhivei Infoarena Monthly | Cod sursa (job #1391000) | Cod sursa (job #2678229) | Cod sursa (job #998134)
Cod sursa(job #998134)
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
const int NMAX = 100010;
int K, N, V[NMAX];
long long S;
bool Check(long long Groups)
{
long long CrtSum = 0;
for(int i = 1; i <= N; ++ i)
CrtSum += min(1LL * V[i], Groups);
return CrtSum >= Groups * K;
}
int main()
{
freopen("grupuri.in", "r", stdin);
freopen("grupuri.out", "w", stdout);
scanf("%i %i", &K, &N);
for(int i = 1; i <= N; ++ i)
{
scanf("%i", &V[i]);
S += 1LL * V[i];
}
long long Left = 1, Right = S / K, Mid, Ans;
while(Left <= Right)
{
Mid = (Left + Right) / 2;
if(Check(Mid)) Ans = Mid, Left = Mid + 1;
else Right = Mid - 1;
}
printf("%lld\n", Ans);
return 0;
}