Pagini recente » Cod sursa (job #433891) | Cod sursa (job #1810116) | Cod sursa (job #158721) | Cod sursa (job #325200) | Cod sursa (job #3036801)
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int v[16005];
int n, k;
int incape(int d)
{
int nr = 1;
int s = 0;
for(int i = 1; i<=n; i++)
{
if(v[i] + s <= d)
{
s += v[i];
}
else
{
s = v[i];
nr++;
}
}
return nr<=k;
}
void bs(int st, int dr)
{
int m;
int ans;
while(st <= dr)
{
m = (st + dr) / 2;
if(incape(m))
{
dr = m-1;
ans = m;
}
else
{
st = m+1;
}
}
g<<ans;
}
int main()
{
f>>n>>k;
int maxim = -1;
for(int i = 1; i<=n; i++)
{
f>>v[i];
maxim = max(maxim, v[i]);
}
bs(maxim, 100000000);
return 0;
}