Pagini recente » Cod sursa (job #3252011) | Cod sursa (job #2398431) | Cod sursa (job #948456) | Cod sursa (job #551691) | Cod sursa (job #1033865)
#include<fstream>
#define dim 16007
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n,k,maxim,a[dim],i,dr;
long long mid,sum,li,ls,sol;
long long ok(long long cap){
long long drum=0;
long long s=0;
for(int i=1;i<=n;++i){
if(a[i]+s<=cap){
s+=a[i];
}
else{
++drum;
s=a[i];
}
}
return ++drum;
}
int main () {
f>>n>>k;
for(i=1;i<=n;++i){
f>>a[i];
sum+=a[i];
if(a[i]>maxim)
maxim=a[i];
}
li=maxim;
ls=sum;
while(li<=ls){
mid=li+(ls-li)/2;
dr=ok(mid);
if(dr<=k){
sol=mid;
ls=mid-1;
}
else{
li=mid+1;
}
}
g<<sol<<"\n";
return 0;
}