Pagini recente » Cod sursa (job #1418762) | Cod sursa (job #2533137) | Cod sursa (job #2978907) | Cod sursa (job #2595960) | Cod sursa (job #3160795)
#include <fstream>
#include <iostream>
int a[16001];
using namespace std;
int main()
{
ifstream cin("transport.in");
ofstream cout("transport.out");
int n,k,max1=-1;
cin>>n>>k;
long long s;
for(int i=1; i<=n; i++ ){
cin>>a[i];
s=s+a[i];
if(max1<a[i]) max1=a[i];
}
int st=max1,raspuns=-1;
long long dr=s;
while(st<=dr){
int mij=(st+dr)/2;
int s1=0,cnt=1;
for(int i=1; i<=n;i++){
if(s1+a[i]<=mij) s1=s1+a[i];
else {
s1=a[i];
cnt++;
}
}
if(cnt<=k){
raspuns=mij;
dr=mij-1;
}
else st=mij+1;
}
cout<<raspuns;
return 0;
}