Pagini recente » Cod sursa (job #1516334) | Cod sursa (job #195694) | Cod sursa (job #872096) | Cod sursa (job #1139202) | Cod sursa (job #1536689)
#include<cstdio>
#include<algorithm>
using namespace std;
int n,k,v[1605],minim=0,st,dr,mij,temp,solutie,maxim;
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", &v[i]);
minim=max(minim, v[i]);
maxim+=v[i];
}
st=minim;dr=maxim;
while(st<=dr){
mij=(dr+st)/2;
int suma=0;
temp=1;
for(int i=1;i<=n;++i){
if(suma+v[i]<=mij){
suma+=v[i];
}
else{
suma=v[i];
++temp;
}
}
if(k>=temp){
solutie=mij;
}
else{
st=mij-1;
}
}
printf("%d", solutie);
}