Pagini recente » Cod sursa (job #1031100) | Cod sursa (job #348349) | Cod sursa (job #1482781) | Cod sursa (job #2720534) | Cod sursa (job #1911449)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int v[16003],n,k,maxi = 0;
int noftt(int c)
{
int i = 0, cur = 0, noft = 0;
while( i < n)
{
if (cur+v[i] <= c)
cur +=v[i];
else
{
cur = v[i];
noft++;
}
i++;
}
if( cur!=0)
noft++;
return noft;
}
int BS(int st , int dr)
{
while( st<=dr)
{
int mij = (st+dr)/2;
int n_o_t = noftt(mij);
if (n_o_t <= k)
{
if( noftt(mij-1) >k || mij-1<maxi)
return mij;
else
dr = mij-1;
}
else
st = mij+1;
}
}
int main()
{
f >> n >> k;
for(int i = 0 ; i < n ; i++)
{
f >>v[i];
if (v[i]> maxi)
maxi = v[i];
}
int result = BS(maxi,n*16000);
g<< result;
return 0;
}