Cod sursa(job #2807546)
Utilizator | Data | 23 noiembrie 2021 21:59:11 | |
---|---|---|---|
Problema | Transport | Scor | 80 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.78 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int main()
{
int v[16005], n, k, st, dr, mijl, cont, s = 0, nr;
f >> n >> k;
for (int i = 1; i <= n; i++)
{
f >> v[i];
}
st = 1;
dr = 256000005;
while (st != dr)
{
s = 0;
cont = 1;
mijl = (st + dr) / 2;
for (int i = 1; i <= n; i++) {
if (s + v[i] <= mijl)
{
s += v[i];
}
else {
s = v[i];
cont++;
}
}
if (cont <= k) {
dr = mijl;
}
else {
st = mijl + 1;
}
}
g << st;
return 0;
}