Pagini recente » Cod sursa (job #285804) | Cod sursa (job #767091) | Sandbox (cutiuţa cu năsip) | Cod sursa (job #2083684) | Cod sursa (job #1105827)
#include <fstream>
using namespace std;
const int MAXN = 16005;
int N, K, st[MAXN];
inline bool Check(const int &value) {
int newTransport = 0, transports = 0;
for(int i = 1 ; i <= N ; ++ i) {
if(newTransport + st[i] < value)
newTransport += st[i];
else {
if(st[i] > value)
return false;
newTransport = st[i];
++ transports;
}
}
return transports <= K;
}
inline int binarySearch() {
int li = 0, ls = MAXN * MAXN, ans = -1;
while(li <= ls) {
int mid = (li + ls) / 2;
if(Check(mid)) {
ls = mid - 1;
ans = mid;
}
else li = mid + 1;
}
return ans;
}
int main() {
ifstream fin("transport.in");
ofstream fout("transport.out");
fin >> N >> K;
for(int i = 1 ; i <= N ; ++ i)
fin >> st[i];
fout << binarySearch() << '\n';
return 0;
}