Pagini recente » Cod sursa (job #2108570) | Cod sursa (job #2435071) | Cod sursa (job #1837849) | Cod sursa (job #2858868) | Cod sursa (job #298814)
Cod sursa(job #298814)
#include<stdio.h>
#define MAX_N 17000
int n,k,v[MAX_N],sol = 0;
int build(int min)
{
int i,t = 1,sum = 0;
for(i = 0; i < n; i++)
if(sum + v[i] < min) sum+= v[i];
else t++,sum = 0;
return t;
}
void search(int st,int dr)
{
int mijl = st+(dr-st)/2;
if(build(mijl) <= k)
{
sol = mijl;
if(st <= mijl-1) search(st,mijl-1);
}
else if(mijl+1 <= dr)
{
search(mijl+1,dr);
}
}
int main()
{
int i,min = -17000;
long max = 0;
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d",&n,&k);
for(i = 0; i < n; i++)
{
scanf("%d",&v[i]);
max+= v[i];
if(v[i]>min) min = v[i];
}
search(min,max);
printf("%d",sol);
fclose(stdin); fclose(stdout);
return 0;
}