Pagini recente » Cod sursa (job #2524768) | Cod sursa (job #2859706) | Cod sursa (job #1480136) | Cod sursa (job #2305296) | Cod sursa (job #335697)
Cod sursa(job #335697)
#include <stdio.h>
#define max 256000000
#define nmax 16000
int n, k, a [nmax];
void scan ()
{
int i;
scanf ("%d%d", &n, &k);
//--k;
for (i=1; i <= n; ++i)
scanf ("%d", &a [i]);
}
bool ok (int v)
{
int i, num=0, s=0;
for (i=1; i <= n && num < k; ++i)
{
if (s+a [i] <= v)
s += a [i];
else
{
if (a [i] > v)
return false;
s=a [i];
++num;
}
}
if (num == k)
return false;
return true;
}
int ceva ()
{
int s, i;
for (s=1; s <= max; s <<= 1);
for (i=0; s; s >>= 1)
if (i+s <= max && (!ok (i+s)))
i += s;
return i+1;
}
int main ()
{
freopen ("transport.in", "r", stdin);
freopen ("transport.out", "w", stdout);
scan ();
printf ("%d\n", ceva ());
return 0;
}