Pagini recente » Cod sursa (job #2983627) | Cod sursa (job #3124875) | Cod sursa (job #2114724) | Cod sursa (job #2527071) | Cod sursa (job #2218584)
#include <fstream>
#include <iostream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int v[16005], n, k;
int verif(int capac)
{ int l = 0, s = 0, i = 1;
while(i <= n)
{
s = 0;
while(s <= capac && i <= n)
s += v[i];
i++;
if(s > capac)
s -= v[i - 1];
--i;
l++;
}
if(l <= k)
return -1;
return 1;
}
int binar(int x, int y)
{
int left = x, right = y, c, t;
while(left <= right)
{
c = (left + right) / 2;
if(verif(c) == -1)
{
t = c;
right = c - 1;
}
else
if(verif(c) == 1)
left = c + 1;
}
return t;
}
int main()
{
int vmin = -1, vmax = 0;
f >> n >> k;
for(int i = 1; i <= n;i++)
{
f >> v[i];
if(v[i] > vmin)
vmin = v[i];
vmax += v[i];
}
int u = binar(vmin,vmax);
g << u;
return 0;
}