Pagini recente » Cod sursa (job #2967163) | Cod sursa (job #3166212) | Cod sursa (job #2371715) | Cod sursa (job #2605453) | Cod sursa (job #2151124)
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int sum[16005], maxx = 0, n, k;
bool nrdrumuri(int x) {
int nr = 1, j = 0;
for (int i = 1; i <= n; i++) {
if (sum[i] - sum[j] > x) {
j = --i;
nr++;
}
}
return (nr > k);
}
void cautbinar() {
int r = maxx - 1, pas = 1 << 27; ///pas = 268435456 = 16000 ^ 2
while (pas != 0) {
if (nrdrumuri(r + pas))
r += pas;
pas >>= 1; /// pas = pas / 2
}
fout << r + 1;
}
int main()
{
fin >> n >> k;
for(int i = 1; i <= n; ++i){
int x;
fin >> x;
maxx = max(maxx , x);
sum[i] = sum[i - 1] + x;
}
cautbinar();
return 0;
}