Pagini recente » Cod sursa (job #2494869) | Cod sursa (job #457830) | Cod sursa (job #1906340) | Cod sursa (job #360883) | Cod sursa (job #2667804)
#include <bits/stdc++.h>
using namespace std;
int n, k, maxi, sum, a[16005];
bool verif(int p)
{
int trans = 1, i = 1, l = 0;
while(trans <= k && i <= n){
l = 0;
while(l <= p && i <= n){
l += a[i++];
}
trans ++;
}
if (i == n+1){
return true;
}
return false;
}
void caut(int st, int dr) {
int mijloc;
while (st < dr) {
mijloc = (st + dr) / 2;
if (verif(mijloc)) {
dr = mijloc;
} else {
st = mijloc + 1;
}
}
if (verif(st)) {
printf("%d", st+1);
}
}
int main() {
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
scanf("%d%d", &n, &k);
for (int i=1;i<=n;i++){
scanf("%d", &a[i]);
maxi = max(maxi, a[i]);
sum += a[i];
}
caut(maxi, sum);
return 0;
}