Pagini recente » Cod sursa (job #2463398) | Cod sursa (job #690207) | Cod sursa (job #2483285) | Cod sursa (job #2525542) | Cod sursa (job #1077765)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("grupuri.in");
ofstream g("grupuri.out");
const int MAX_N = 100005;
int N, K, a[MAX_N];
long long sum;
void read() {
f >> K >> N;
for (int i = 1; i <= N; i++) {
f >> a[i];
sum += 1LL * a[i];
}
}
bool isGood (long long X) {
long long nr = 0, must = 1LL * X * K;
for (int i = 1; i <= N; i++)
nr += min ((long long)a[i], X);
if (nr >= must)
return 1;
return 0;
}
long long solve (long long lo, long long hi) {
long long ret;
while (lo <= hi) {
long long mid = (lo + hi) / 2;
if (isGood (mid)) {
ret = mid;
lo = mid + 1;
} else {
hi = mid - 1;
}
}
return ret;
}
int main() {
read();
g << solve (1, sum / K);
return 0;
}