Pagini recente » Cod sursa (job #1923801) | Cod sursa (job #495415) | Cod sursa (job #330256) | Cod sursa (job #1498827) | Cod sursa (job #1529179)
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int N, K;
int sol;
int sp[16005];
int possible(int C)
{
int lastPos = 0, now;
for (int i = 1; i <= K; ++i)
{
int lt = lastPos, rt = N + 1;
while (rt - lt > 1)
{
int mid = (lt + rt) / 2;
if (sp[mid] - sp[lastPos] <= C)
lt = mid;
else
rt = mid;
}
lastPos = lt;
now = lt;
if (now == N)
return 1;
}
return 0;
}
void cb_C()
{
int lt = 0, rt = 16000 * 16000 + 1;
while (rt - lt > 1)
{
int mid = (lt + rt) / 2;
if (possible(mid))
{
sol = mid;
rt = mid;
}
else
lt = mid;
}
}
int main()
{
fin >> N >> K;
for (int i = 1, x; i <= N; ++i)
{
fin >> x;
sp[i] = x + sp[i - 1];
}
cb_C();
fout << sol << '\n';
fin.close();
fout.close();
return 0;
}