Pagini recente » Istoria paginii runda/dij | Monitorul de evaluare | Cod sursa (job #2013580) | Cod sursa (job #678487) | Cod sursa (job #2372669)
#include <bits/stdc++.h>
#define NMAX 16005
using namespace std;
ifstream f ( "transport.in" );
ofstream g ( "transport.out" );
long long int n , v[NMAX] , k , m , i , val = 1 , nr;
bool transport ( int x )
{
long aux;
long nr;
long i;
aux = 0;
nr = 0;
for ( i = 1 ; i <= n ; i ++ )
{
if ( v[i] > x )
return 0;
if ( v[i] > aux )
{
nr ++;
aux = x;
}
aux -= v[i];
}
if ( nr <= k )
return 1;
else
return 0;
}
int cautbin()
{
int mij;
int st;
int dr;
int minim;
mij = 0;
st = 1;
dr = NMAX * NMAX;
minim = -1;
while ( st <= dr )
{
mij = ( dr - st ) / 2 + st;
if ( transport ( mij ) != 0 )
{
minim = mij;
dr = mij - 1;
}
else
st = mij + 1;
}
return minim;
}
int main()
{
f >> n >> k;
for ( i = 1 ; i <= n ; i ++ )
f >> v[i];
g << cautbin();
return 0;
}