Pagini recente » Cod sursa (job #1965748) | Cod sursa (job #3030435) | Cod sursa (job #342605) | Cod sursa (job #1676990) | Cod sursa (job #2051725)
#include <cstdio>
#include <algorithm>
const int MAX_N = 100000;
int K, N;
int a[MAX_N];
bool sePoate(int x) {
long long s = 0;
for (int i = N - 1; i >= 0; i--) {
s += 1LL * std::min(x, a[i]);
}
return s >= 1LL * x * K;
}
int main() {
freopen("grupuri.in", "r", stdin);
freopen("grupuri.out", "w", stdout);
scanf("%d%d", &K, &N);
long long s = 0;
for (int i = 0; i < N; i++) {
scanf("%d", &a[i]);
s += 1LL * a[i];
}
int st, dr;
st = 1;
dr = (int)(1LL * s / K);
int ans = 0;
while (st <= dr) {
int med = (st + dr) / 2;
if (sePoate(med)) {
st = med + 1;
ans = med;
} else {
dr = med - 1;
}
}
printf("%d\n", ans);
return 0;
}