Pagini recente » Cod sursa (job #2786752) | Cod sursa (job #2254297) | Cod sursa (job #658263) | Monitorul de evaluare | Cod sursa (job #1520551)
#include <cstdio>
#include <cstring>
#include <algorithm>
int v[16001];
using namespace std;
int main(){
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
int n,k,s,c,d=0,t=0,z=0,min=0,max=0,i, pp=0,m=0,rasp=2000000000;
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++){
scanf("%d",&s);
t+=s;
v[i]=s;
if(s>max)
max=s;
}
min=t/k;
if(max>min){
min=max;
max=t;
}
else
max=t;
pp=0;
i=1;
while((min<=max)&&pp==0){
m=(min+max)/2;
while(i<=n){
while((m>=d+v[i])&&(i<=n)){
d+=v[i];
i++;
}
d=0;
z++;
}
if(z<=k){
max=m-1;
i=1;
z=0;
if(m<rasp)
rasp=m;
}
else{
min=m+1;
i=1;
z=0;
}
}
printf("%d",rasp);
return 0;
}