Pagini recente » Cod sursa (job #1284861) | Cod sursa (job #1364312) | Cod sursa (job #1708266) | Cod sursa (job #814641) | Cod sursa (job #1521763)
#include <fstream>
#include <vector>
#include <iostream>\
using namespace std;
int n, k;
vector<int> v;
bool good(int mx, int now, int k, int at){
if(k <= 0)
return false;
if(at == n + 1)
return true;
if(now + v[at] <= mx)
return good(mx, now + v[at], k, at + 1);
else if(v[at] <= mx)
return good(mx, v[at], k - 1, at + 1);
else
return false;
}
bool good(int wgt) {
return good(wgt, 0, k, 1);
}
int bsearch() {
int i, step = 15;
for(i = 0; step; step /= 2) {
if(!good(i + step))
i += step;
}
return i + 1;
}
int main() {
ifstream in("transport.in");
in >> n >> k;
v.resize(n + 1);
for(int i = 1; i <= n; ++i)
in >> v[i];
ofstream out("transport.out");
out << bsearch() << "\n";
return 0;
}