Pagini recente » Cod sursa (job #2269704) | Istoria paginii runda/speedt2 | Istoria paginii runda/simulare.oji.2024.bv_11_12/clasament | Cod sursa (job #1232424) | Cod sursa (job #2924523)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int main()
{
int n, k, sol;
in >> n >> k;
int v[n], maxim = -1, s = 0;
for(int i = 1; i <= n; i ++)
{
in >> v[i];
s += v[i];
if(v[i] > maxim)
{
maxim = v[i];
}
}
int st = maxim;
int dr = s;
while(st <= dr)
{
int mijl = (st + dr )/ 2;
int aux = mijl;
int nr = 0;
for(int i = 1; i <= n - 1; i ++)
{
if(v[i] <= aux)
{
aux -= v[i];
if(aux < v[i +1])
{
aux = mijl;
nr ++;
}
}
}
if(nr + 1 > k)
{
st = mijl + 1;
}
else
{
dr = mijl - 1;
sol = mijl;
}
}
out << sol;
}