Pagini recente » Cod sursa (job #2576952) | Cod sursa (job #2029947) | Cod sursa (job #2832714) | Cod sursa (job #1603380) | Cod sursa (job #2417056)
#include <iostream>
#include <cstdio>
using namespace std;
int n,k,a[16005];
bool ok(int val){
int poz = 0, s = 0, tr = 0;
while(poz<n && tr<k){
if(a[poz]>val)
return 0;
s = a[poz];
++poz;
while(poz<n && s+a[poz]<=val)
s+=a[poz++];
++tr;
}
return poz==n;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d", &n,&k);
for(int i = 0; i < n; ++i)
scanf("%d", &a[i]);
int st = 1, dr = 256000000;
while(st<dr){
int mij = (st+dr)/2;
if(ok(mij))
dr = mij;
else
st = mij + 1;
}
cout<<st;
return 0;
}