Pagini recente » Cod sursa (job #1613480) | Cod sursa (job #1265089) | Cod sursa (job #1176580) | Cod sursa (job #2575580) | Cod sursa (job #1480931)
#include <cstdio>
#include <vector>
const char iname[] = "transport.in";
const char oname[] = "transport.out";
const int MAX = 16005;
int n, k, a[MAX];
void read(){
scanf("%d %d", &n, &k);
for(int i = 0; i < n; ++i){
scanf("%d", a+i);
}
}
int main()
{
freopen(iname, "r", stdin);
freopen(oname, "w", stdout);
read();
int maxim = -1;
long long st = 0, dr = 0;
for(int i = 0; i < n; ++i){
if(i[a] > maxim) maxim = i[a];
dr+=i[a];
}
st = maxim;
while(st < dr){
int mid = st + ((dr-st)>>1);
int required = 1;
long long crtLoad = 0;
for(int i = 0; i < n; ++i){
if(crtLoad + i[a] <= mid){
crtLoad += i[a];
}
else{
++required;
crtLoad = i[a];
}
}
if(required <= k)
dr = mid;
else
st = mid+1;
}
printf("%lld", st);
return 0;
}