Pagini recente » Cod sursa (job #1324948) | Cod sursa (job #191449) | Cod sursa (job #2375945) | Cod sursa (job #368032) | Cod sursa (job #604968)
Cod sursa(job #604968)
#include <stdio.h>
#define MAX 16001
int a[MAX], n, k;
int min_transp(int c)
{
int liber = c, nr = 0, i;
for(i=0;i<n;++i)
{
if(a[i] <= liber)
{
liber -= a[i];
}
else
{
liber = c-a[i];
nr++;
}
}
if(liber == c) return nr;
else return nr+1;
}
int bin_search(int st, int dr)
{
int m;
if(st >= dr)
{
return st;
}
m = (st+dr)/2;
if(min_transp(m) <= k)
{
return bin_search(st, m);
}
return bin_search(m+1, dr);
}
int main()
{
int i, max = 0, sum = 0;
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
scanf("%d %d", &n, &k);
for(i=0;i<n;++i)
{
scanf("%d", &a[i]);
sum += a[i];
if(max < a[i])
{
max = a[i];
}
}
printf("%d", bin_search(max, sum));
return 0;
}