Pagini recente » Cod sursa (job #2958864) | Cod sursa (job #1532318) | Cod sursa (job #382714) | Cod sursa (job #2741650) | Cod sursa (job #897536)
Cod sursa(job #897536)
#include <cstdio>
#define NMax 16001
using namespace std;
long o,k,n,v[NMax],x,s,maxel;
bool verif(long c) {
long sum=0,i;
o=1;
for(i=1;i<=n&&o<=k;i++) {
if(sum+v[i]<=c)
sum+=v[i];
else
sum=v[i],o++;
}
if(i==n+1)
return 1;
return 0;
}
int bsearch(long in,long fn) {
long mid;
while(in<=fn) {
mid=(fn-in)/2+in;
if(in==fn)
return in;
else
if(verif(mid))
fn=mid;
else
in=mid+1;
}
return 0;
}
int main() {
freopen("transport.in","rt",stdin);
freopen("transport.out","wt",stdout);
scanf("%ld %ld",&n,&k);
for(long i=1;i<=n;i++) {
scanf("%ld",&x);
s+=x;
v[i]=x;
if(x>maxel)
maxel=x;
}
printf("%ld",bsearch(maxel,s));
return 0;
}