Pagini recente » Cod sursa (job #1707879) | Cod sursa (job #1722048) | Cod sursa (job #1191943) | Cod sursa (job #2292571) | Cod sursa (job #295844)
Cod sursa(job #295844)
#include <cstdio>
#define FIN "grupuri.in"
#define FOUT "grupuri.out"
#define N 100010
int n, k, a[N], s[N], c;
void read()
{
int i;
freopen(FIN, "r", stdin);
scanf("%d%d", &k, &n);
for (i = 1; i <= n; ++i)
{
scanf("%d", &a[i]);
s[i] = s[i - 1] + a[i];
}
}
int calc(int m)
{
int x, i = 1, ok = 1;
while (i < n && ok)
if (a[i] >= m)
ok = 0;
else
++i;
x = s[i - 1] / m + (n >= i ? (n - i + 1) : 0);
if (x < k)
return 1;
if (x == k)
return 0;
return -1;
}
void solve()
{
int p = 1, u = s[n] / k, m, x;
while (p < u)
{
m = (p + u) >> 1;
x = calc(m);
if (x < 1)
{
p = m + 1;
//if (x == 0)
c = m;
}
else
u = m;
}
if (!calc(p) && p > c)
c = p;
}
void write()
{
freopen(FOUT, "w", stdout);
printf("%d\n", c);
}
int main()
{
read();
solve();
write();
}