Pagini recente » Istoria paginii runda/0931011001 | Istoria paginii runda/23dezile_4/clasament | Cod sursa (job #733581) | Cod sursa (job #1705177) | Cod sursa (job #2924551)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int v[16005];
int main()
{
int n, k, maxim = -1, sum = 0, st, dr, sol, mij, k_2 = 0, transport = 0;
in>>n>>k;
for(int i = 1; i<=n; i++)
{
in>>v[i];
sum += v[i];
if(v[i] > maxim)
{
maxim = v[i];
}
}
st = maxim;
dr = sum;
sol = -1;
sum = 0;
while(st <= dr)
{
transport = 0;
mij = (st+dr)/2;
int i = 1;
while(i != n+1)
{
sum+=v[i];
if(sum > mij)
{
i--;
transport++;
sum = 0;
}
i++;
}
if(sum != 0)
{
transport++;
sum = 0;
}
if(transport > k)
{
st = mij + 1;
}
else
{
sol = mij;
dr = mij - 1;
}
}
out<<sol;
}