Pagini recente » Borderou de evaluare (job #3367849) | Borderou de evaluare (job #3367885) | Borderou de evaluare (job #3367886) | Borderou de evaluare (job #3367838) | Cod sursa (job #3368024)
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int n,k;
int v[16003];
bool valid(int x){
int cnt=1;
int sum=0;
for (int i=0;i<n;i++){
if(sum+v[i]>x){
cnt++;
sum=v[i];
} else sum+=v[i];
}
return cnt<=k;
}
int main() {
cin>>n>>k;
int l=0, r=0;
int a;
for (int i=0;i<n;i++) {
cin>>a;
v[i]=a;
l= max(l,a);
r+=a;
}
while (l<r) {
int m=(l+r)/2;
if(valid(m))r=m;
else l=m+1;
}
cout<< l<<"\n";
}