Pagini recente » Cod sursa (job #2943927) | Cod sursa (job #419860) | Cod sursa (job #1763388) | Cod sursa (job #1907707) | Cod sursa (job #1662842)
#include <cstdio>
#define MAX_N 16000
using namespace std;
int N, K;
int v[MAX_N+5];
int nrTransporturi(int c){
int nrt=1, sumc=0, i;
for (i=1; i<=N; i++)
if (sumc+v[i]>c){
nrt++;
sumc=v[i];
}
else sumc+=v[i];
return nrt;
}
long long BinarySearch(int st, long long dr){
long long med, last;
while (st<=dr){
med=dr-(dr-st)/2;
if (nrTransporturi(med)<=K){
dr=med-1;
last=med;
}
else
st=med+1;
}
return last;
}
int main(){
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
int i, maxv=0;
long long sumv=0, ans;
scanf("%d%d", &N, &K);
for (i=1; i<=N; i++){
scanf("%d", &v[i]);
if (maxv<v[i]) maxv=v[i];
sumv+=v[i];
}
ans=BinarySearch(maxv, sumv);
printf("%lld", ans);
return 0;
}