Pagini recente » Cod sursa (job #2755595) | Cod sursa (job #431817) | Cod sursa (job #208579) | Cod sursa (job #1715453) | Cod sursa (job #1795486)
#include<bits/stdc++.h>
using namespace std;
#define in f
#define out g
ifstream f("transport.in");
ofstream g("transport.out");
int const inf = 1000000;
int n;
int k;
int v[16010];
int maxx;
int valid(int x) {
int drum = 1;
int aux = x;
for(int i = 1; i <= n; ++i) {
if(v[i] > x) {
return false;
}
if(aux >= v[i]) {
aux -= v[i];
} else {
aux = x - v[i];
drum++;
}
}
if(drum <= k) {
return true;
} else {
return false;
}
}
int binsearch(int fin) {
int pos = fin;
int step = 1;
for(step = 1; step < fin; step *= 2);
for(int i = 1; step > 0; step /= 2) {
if(pos - step > 0 && valid(pos - step))
pos -= step;
}
out << pos;
}
int main() {
in >> n;
in >> k;
for(int i = 1; i <= n; ++i) {
in >> v[i];
maxx += v[i];
}
binsearch(maxx);
}