Pagini recente » Cod sursa (job #1801955) | Cod sursa (job #279995) | Cod sursa (job #2519448) | Cod sursa (job #1798736) | Cod sursa (job #1206315)
#include <fstream>
using namespace std;
ifstream fin ("grupuri.in");
ofstream fout ("grupuri.out");
const int N = 1e5 + 5;
long long v[N], sum, n, k, sol = 0;
bool go(long long nr) {
long long ras = 0;
for (int i = 0; i < n; ++i) {
ras += min(nr, v[i]);
if (ras >= nr * k)
return 1;
}
return 0;
}
int main() {
fin >> k >> n;
for (int i = 0; i < n; ++i) {
fin >> v[i];
sum += v[i];
}
int step = 1;
for(; step <= sum / k; step <<= 1LL);
for (; step; step >>= 1LL)
if (sol + step <= sum / k && go(sol + step))
sol += step;
fout << sol;
}