Pagini recente » Cod sursa (job #972496) | Cod sursa (job #2852898) | Cod sursa (job #1724985) | Cod sursa (job #586596) | Cod sursa (job #1480929)
#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);
}
}
bool validateTransport(int val){
int crtLoad = 0, cnt = 0;
for(int i = 0; i < n; ++i){
crtLoad += a[i];
if(crtLoad > val){
crtLoad = a[i];
cnt++;
}
}
if(cnt <= k) return true;
else return false;
}
int main()
{
freopen(iname, "r", stdin);
freopen(oname, "w", stdout);
read();
int st, dr = 0, maxim = -1;
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);
if(validateTransport(mid)==true)
dr = mid;
else
st = mid + 1;
}
printf("%d", st);
return 0;
}