Pagini recente » Cod sursa (job #3286845) | Cod sursa (job #5488) | Cod sursa (job #2561146) | Cod sursa (job #1653039) | Cod sursa (job #1745044)
#include<bits/stdc++.h>
#define N 16050
using namespace std;
int n, k, v[N], i, m;
bool check(int x)
{
int n1 = n;
for(int i = 1 ;i <= k; i++)
{
int c = x;
while(c >= 0)
{
if(v[n1]<=c)
{c -= v[n1];
n1--;}
else break;
}
if(n1<=0) return 1;
}
return 0;
}
int main()
{ int max, min;
max =0;
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
scanf("%d %d", &n, &k);
for (i = 1; i <= n; i++) {
scanf("%d", &v[i]);
max += v[i];
}
min = max;
int st = 1;
int dr = max;
while (st < dr) {
m = (st + dr)/2;
if (check(m)) {
if (m < min) min = m;
dr = m;}
else st = m+1;
}
printf("%d", min);
return 0;
}