Pagini recente » Cod sursa (job #1081288) | Cod sursa (job #2155614) | Cod sursa (job #1314117) | Cod sursa (job #2192135) | Cod sursa (job #2589652)
#include <bits/stdc++.h>
#define INF 2000000000
#define MOD 997
using namespace std;
const int NMAX = 16010;
int N, K, SMAX, SUM;
int v[NMAX];
void read(){
scanf("%d%d", &N, &K);
for(int i = 1; i <= N; i++){
scanf("%d", &v[i]);
SUM += v[i];
SMAX = max(SMAX, v[i]);
}
}
inline bool check(int x){
int cap = 0, cnt = 1;
for(int i = 1; i <= N; i++){
if(cap + v[i] > x){
cnt++;
cap = 0;
}
cap += v[i];
}
if(cnt > K)
return false;
else return true;
}
int binsearch(int st, int dr){
int mid, last;
while(st <= dr){
int mid = (st + dr) / 2;
if(check(mid)){
dr = mid - 1;
last = mid;
} else st = mid + 1;
}
return last;
}
int main(){
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
read();
printf("%d", binsearch(SMAX, SUM));
return 0;
}