Pagini recente » Cod sursa (job #772631) | Cod sursa (job #1724634) | Cod sursa (job #2135880) | Cod sursa (job #2804843) | Cod sursa (job #2667092)
#include <bits/stdc++.h>
using namespace std;
int n, k, maxi, sum, a[16005];
bool verif(int p)
{
int trans = 0, 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(dr - st > 1){
mijloc = (st + dr)/2;
if (verif(mijloc)){
dr = mijloc;
}else{
st = mijloc;
}
}
if (verif(dr)){
printf("%d", dr);
}
}
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;
}