Pagini recente » Cod sursa (job #1650492) | Cod sursa (job #2837729) | Cod sursa (job #1457688) | Cod sursa (job #528973) | Cod sursa (job #374924)
Cod sursa(job #374924)
#include <stdio.h>
#define Nmax 100002
int A[Nmax];
long long P, S, n, k, i, p, u, mid, sol;
int verif(long long X) {
long long i;
for (i = 1, P = 0; i <= n; i++) {
if (A[i] <= X)
P += A[i];
else
P += X;
if (P >= X * k)
return 1;
}
return 0;
}
int main() {
FILE *f = fopen("grupuri.in", "r");
FILE *g = fopen("grupuri.out", "w");
fscanf(f, "%lld %lld", &k, &n);
for (i = 1; i <= n; i++) {
fscanf(f, "%d", &A[i]);
S += (long long)A[i];
}
p = 1, u = S / k;
while (p <= u) {
mid = (u - p) / 2 + p;
if (verif(mid)) {
sol = mid;
p = mid + 1;
}
else
u = mid - 1;
}
fprintf(g, "%lld", sol);
fclose(f);
fclose(g);
return 0;
}