Pagini recente » Cod sursa (job #1612780) | Cod sursa (job #1090307) | Cod sursa (job #2286318) | Cod sursa (job #1805335) | Cod sursa (job #1714539)
#include <fstream>
using namespace std;
ofstream fout("transport.out");
ifstream fin ("transport.in" );
long long n , k , v[20000] , st , dr , mij , cnt , rsp , nr , suma;
int main()
{
fin>>n>>k;
for( int i = 1 ; i <= n ; i++ ) fin>>v[ i ];
st = 1 ;
dr = 2000000000;
while( st <= dr )
{
mij = ( st + dr ) >> 1;
suma = 0;
cnt = 1;
for(int i = 1 ; i <= n ; i++ )
{
if( suma + v[ i ] <= mij ) suma += v[ i ];
else
{
suma = v[ i ] ;
cnt++;
}
if( v[ i ] > mij ) cnt = k + 1;
}
if( cnt <= k )
{
rsp = mij;
dr = mij - 1;
}
else st = mij + 1;
}
fout<<rsp;
}