Pagini recente » Cod sursa (job #3139607) | Cod sursa (job #1850387) | Cod sursa (job #1435093) | Cod sursa (job #2744951) | Cod sursa (job #1026662)
#include<stdio.h>
#define INF 160001
int n,k,v[INF],max=0;
int sum=0;
bool check(int cant)
{
int k2=1,ad=0;
for(int i=0;i<n;++i)
{
ad+=v[i];
if(ad>cant)ad=0,k2++,--i;
if(k2>k)return false;
}
return true;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d",&n,&k);
for(int i=0;i<n;++i){scanf("%d",&v[i]);sum+=v[i];if(v[i]>max)max=v[i];}
int st=max,dr=sum,m=(st+dr)>>1;
while(st<dr)
{
if(check(m))dr=m;
else st=m+1;
m=(st+dr)>>1;
}
printf("%d\n",st);
return 0;
}