Pagini recente » Cod sursa (job #1279459) | Cod sursa (job #3330925) | Cod sursa (job #2856626) | Cod sursa (job #2546929) | Cod sursa (job #3306877)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("grupuri.in");
ofstream fout("grupuri.out");
const int MAX_N = 100000;
int a[MAX_N + 1], n, k;
int64_t t;
template<typename T1, typename T2>
T2 max(const T1 &x, const T2 &y) {
return x > y ? x : y;
}
bool f(int64_t val) {
int64_t s = 0;
for (int i = 1; i <= n; i++) {
s += max(a[i], val);
if (s >= (int64_t)k * val)
return true;
}
return false;
}
int main() {
fin >> k >> n;
t = 0;
for (int i = 1; i <= n; i++) {
fin >> a[i];
t += a[i];
}
int64_t st = 1, dr = t / k, mid, res;
while (st <= dr) {
mid = st + ((dr - st) >> 1);
if (f(mid) == 0)
dr = mid - 1;
else {
st = mid + 1;
res = mid;
}
}
fout << res << "\n";
fin.close();
fout.close();
return 0;
}