Pagini recente » Monitorul de evaluare | Cod sursa (job #1057170) | Cod sursa (job #3258540) | Cod sursa (job #1976598) | Cod sursa (job #821853)
Cod sursa(job #821853)
#include<stdio.h>
int v[16000],n,k,i,l1,l2,m,max,s,t,k1;
int main (){
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
max=-1;
scanf("%d%d", &n,&k);
for(i=0;i<n;i++)
{
scanf("%d", &v[i]);
s+=v[i];
if(v[i]>max) max=v[i];
}
l1=max;
l2=s;
while(l1<=l2)
{
m=(l1+l2)/2;
t=0;
s=0;
for(i=0;i<n;i++)
{
if(s+v[i]<=m) s+=v[i];
else
{
t++;
s=v[i];
}
}
if(s!=0) t++;
if(t<=k)
{
l1=m-1;
k1=m;
}
else l1=m+1;
}
if(t<=k) printf("%d", m);
else printf("%d", k1);
return 0;
}