Pagini recente » Cod sursa (job #2230271) | Cod sursa (job #147587) | Cod sursa (job #521674) | Profil AnDrEwBoY | Cod sursa (job #1236812)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("grupuri.in");
ofstream g ("grupuri.out");
const int NMAX = 100000 + 1;
int k, n;
long long s;
int v[NMAX];
void citeste () {
f >> k >> n;
for (int i = 1; i <= n; i++) {
f >> v[i];
s += v[i];
}
}
bool ok (long long x) {
long long s = 0;
for (int i = 1; i <= n; i++)
if (v[i] < x) s += v[i];
else s += x;
if (k * x <= s) return true;
return false;
}
void cauta () {
long long st = 1, dr = s / k, m;
long long sol = 0;
while (st <= dr) {
m = (st + dr) / 2;
if (ok(m)) {
sol = m;
st = m + 1;
}
else dr = m - 1;
}
g << sol << '\n';
}
int main () {
citeste();
cauta();
return 0;
}