Pagini recente » Cod sursa (job #1275663) | Cod sursa (job #2702542) | Cod sursa (job #2259157) | Cod sursa (job #377845) | Cod sursa (job #3140300)
#include <bits/stdc++.h>
using namespace std;
int n, k, A[16011];
int transport(int c_max){
int t = 1, c_tmp = 0;
for(int i=0; i<n; i++){
if(A[i] > c_max){
return 1e9;
}
if(c_tmp + A[i] <= c_max){
c_tmp += A[i];
} else {
t++;
c_tmp = A[i];
}
}
return t;
}
int caut(int cl, int cr, int t_max){
if(cl==cr){
return cl;
}
int cm = (cl+cr)/2;
int tm = transport(cm);
if(tm <= t_max){
if(transport(cm-1) <= t_max){
return caut(cl, cm - 1, t_max);
}
return cm;
}
return caut(cm+1, cr, t_max);
}
int main(){
ifstream cin("transport.in");
ofstream cout("transport.out");
cin >> n >> k;
for(int i=0; i<n; i++){
cin >> A[i];
}
cout << caut(1, 16000*16000+100, k);
}