Pagini recente » Cod sursa (job #2116696) | Cod sursa (job #888401) | Cod sursa (job #1926962) | Cod sursa (job #1262730) | Cod sursa (job #2865194)
#include <fstream>
using namespace std;
const int MAXN = 16005;
int N, K, st[MAXN];
inline bool Check(const int &value) {
int newTransport = 0, transports = 1;
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 = 1, ls = st[0], 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], st[0] += st[i];
fout << binarySearch() << '\n';
return 0;
}