Pagini recente » Cod sursa (job #1438603) | Cod sursa (job #2624536) | Cod sursa (job #1092749) | Cod sursa (job #279757) | Cod sursa (job #2396164)
#include <fstream>
using namespace std;
ifstream fin ("grupuri.in");
ofstream fout ("grupuri.out");
long long a[100005], sp[100005];
int n, k;
bool check(int x) {
long long p = 0;
for (int i = n - k + 1; i <= n; ++i) {
if (a[i] < x)
p += x - a[i];
}
if (p <= sp[n - k])
return true;
return false;
}
int main() {
fin >> k >> n;
for (int i = 1; i <= n; ++i) {
fin >> a[i];
sp[i] = sp[i - 1] + a[i];
}
int st = 0, dr = sp[n] / k, mij, ans = 0;
while (st <= dr) {
mij = (st + dr) / 2;
if (check(mij)) {
st = mij + 1;
ans = mij;
} else
dr = mij - 1;
}
fout << ans;
return 0;
}