Pagini recente » Cod sursa (job #1602357) | Cod sursa (job #1345350) | Cod sursa (job #2663328) | Cod sursa (job #3325006) | Cod sursa (job #3342753)
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
const int INF = 1e9;
int v[16005];
int n, k;
int ok(int c)
{
int i, op, sum;
i = op = 1;
sum = 0;
while(i <= n)
{
if(v[i] > c)
{
op = INF;
return op;
}
if(sum + v[i] > c)
{
op ++;
sum = v[i];
}
else
sum = sum + v[i];
i ++;
}
return op;
}
int BSL(int st, int dr)
{
int med, last, t;
last = -1;
while(st <= dr)
{
med = (st + dr) / 2;
t = ok(med);
if(t <= k)
{
last = med;
dr = med - 1;
}
else
st = med + 1;
}
return last;
}
int main()
{
int s, i, rasp;
fin >> n >> k;
s = 0;
for(i = 1; i <= n; i ++)
{
fin >> v[i];
s = s + v[i];
}
rasp = BSL(1, s);
fout << rasp << "\n";
return 0;
}