Pagini recente » Cod sursa (job #517466) | Cod sursa (job #939096) | Cod sursa (job #228044) | Cod sursa (job #2034786) | Cod sursa (job #1566554)
#include <iostream>
#include <fstream>
using namespace std;
typedef long long int lli;
ifstream in("transport.in");
ofstream out("transport.out");
lli v[16003],n,k,maxi = 0;
lli noftt( lli c)
{
lli 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;
}
lli BS(lli st , lli dr)
{
while( st<=dr)
{
lli mij = (st+dr)/2;
lli n_o_t = noftt(mij);
if (n_o_t == k)
{
if( noftt(mij-1) >k)
return mij;
else
dr = mij-1;
}
if( n_o_t < k )
dr = mij-1;
if( n_o_t > k)
st = mij+1;
}
}
int main()
{
in >> n >> k;
for(lli i = 0 ; i < n ; i++)
{
in >>v[i];
if (v[i]> maxi)
maxi = v[i];
}
lli result = BS(maxi,n*16000);
out<< result;
return 0;
}