Pagini recente » Cod sursa (job #2378028) | Cod sursa (job #308592) | Cod sursa (job #343204) | Cod sursa (job #2757835) | Cod sursa (job #521419)
Cod sursa(job #521419)
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
int n,k,i,maxim,st,dr,mij,sol;
long long int s;
int f(int x,vector<int>v){
int y=0;
long long int sx=0;
for(i=1;i<=n;++i){
if(sx+v[i]<x){
sx+=v[i];
}
else{
++y;
sx=v[i];
}
}
return y;
}
int main(){
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d",&n,&k);
vector<int>v(n+2);
for(i=1;i<=n;++i){
scanf("%d",&v[i]);
if(maxim<v[i]){
maxim=v[i];
}
s+=v[i];
}
st=maxim;
dr=s;
if(f(st,v)<=k){
printf("%d",st);
}
else{
while(st<=dr){
mij=(st+dr)/2;
if(f(mij,v)<=k){
dr=mij-1;
}
else{
st=mij+1;
}
}
printf("%d",st);
}
return 0;
}