Pagini recente » Cod sursa (job #662418) | Cod sursa (job #17806) | Cod sursa (job #2180563) | Cod sursa (job #1266490) | Cod sursa (job #1522526)
#include<fstream>
#include<math.h>
using namespace std;
int n ,k;
int v[16005];
inline bool ok(int c) {
int kk = k;
int cc = c;
for(int i = 1; i <= n; i++)
if(cc - v[i] >= 0)
cc -= v[i];
else {
kk--;
cc = c - v[i];
}
return (kk > 0);
}
inline int binary(int st, int dr) {
int mid = ceil((st+dr) / 2);
if(dr-st <= 1) {
if(ok(st)) return st;
else
return dr;
}
if(ok(mid))
return binary(st, mid);
else
return binary(mid, dr);
}
int main(void) {
ifstream fin("transport.in");
ofstream fout("transport.out");
fin >> n; fin >> k;
int max1 = -1;
for(int i = 1; i <= n; i++) {
fin >> v[i];
max1 = v[i] > max1 ? v[i] : max1;
}
int x = binary(max1, n * max1);
fout << x;
}