Pagini recente » Cod sursa (job #2667061) | Cod sursa (job #275017) | Cod sursa (job #588696) | Cod sursa (job #909549) | Cod sursa (job #521423)
Cod sursa(job #521423)
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
long long int s,n,k,i,maxim,sol,st,dr,mij;
int f(int x,vector<int>v){
int y=1;
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("%lld",st);
}
else{
while(st<=dr){
mij=st+(dr-st)/2;
if(f(mij,v)<=k){
dr=mij-1;
}
else{
st=mij+1;
}
}
printf("%lld",st);
}
return 0;
}