Pagini recente » Cod sursa (job #1689860) | Cod sursa (job #2351625) | Cod sursa (job #984884) | Cod sursa (job #968852) | Cod sursa (job #1799728)
#include <cstdio>
using namespace std;
int n, m, a[16001];
inline bool CALC (int V){
int S = 0, NR = 1;
for(int i = 1; i <= n ; ++i){
if(a[i] > V) return 0;
if(S + a[i] > V) ++NR, S = 0;
if(NR > m) return 0;
S = S + a[i];
}
return 1;
}
int main()
{
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
scanf("%d%d", &n, &m);
for(int i = 1; i <= n ; ++i)
scanf("%d", &a[i]);
int st = 1, dr = 256000000;
while(st <= dr){
int mij = (st + dr) / 2;
if(CALC(mij))
dr = mij - 1;
else
st = mij + 1;
}
printf("%d", st);
return 0;
}