Pagini recente » Cod sursa (job #414744) | Cod sursa (job #109949) | Cod sursa (job #1057068) | Cod sursa (job #203690) | Cod sursa (job #1539352)
#include <cstdio>
using namespace std;
int n,k,low,up,x[16001];
int main()
{ freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
scanf("%d%d",&n,&k);
for(int i=1;i<=n;++i)
{ scanf("%d",&x[i]);
up+= x[i];
if(x[i]>low) low=x[i];
}
int st=low,dr=up,res;
while(st<=dr)
{ int med=(st+dr)/2,camioane=1,sum=0;
for(int i=1;i<=n;++i)
if(sum+x[i]<=med) sum+=x[i]; else {++camioane; sum = x[i];}
if(camioane<=k) {res=med; dr=med-1;} else st=med+1;
}
printf("%d",res);
return 0;
}