Cod sursa(job #211112)
Utilizator | Tudorica Constantin Alexandru tudalex | Data | 30 septembrie 2008 21:29:02 |
---|---|---|---|
Problema | Transport | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.53 kb |
#include <stdio.h>
const int n_max = 16001;
int a[n_max];
int n,k, i;
int good(int x)
{
int p = k, c = 0, o;
while (p >0)
{
o = x;
while (o >= 0 && c<=n)
o-=a[++c];
--c;
--p;
}
if (c>=n)
return 1;
return 0;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d %d", &n, &k);
for (i = 1; i <= n; ++ i)
scanf("%d", &a[i]);
int step = 1<<29;
for (i = 0; step; step>>=1)
{
if (!good(i+step))
i+=step;
}
printf("%d\n", i+1);
}