Pagini recente » Cod sursa (job #3153592) | Cod sursa (job #2811429) | Cod sursa (job #141644) | Cod sursa (job #849469) | Cod sursa (job #2679638)
#include <fstream>
using namespace std;
ifstream in ("transport.in") ;
ofstream out ("transport.out") ;
const int M = 16005 ;
int N , k , v[M] , val ;
long long s ;
bool ok (int med)
{
int i, sc, nrtr ;
sc = nrtr = 0 ;
for(i = 1 ; i <= N ; i++)
{
if(v[i] > med)
return 0 ;
if(sc + v[i] <= med)
sc = sc + v[i] ;
else
{
nrtr++;
sc = v[i] ;
}
}
nrtr++;
return (nrtr <= k) ;
}
int bsL (int st , int dr)
{
int med, last ;
while(st <= dr)
{
med = (st + dr) / 2 ;
if(ok(med))
{
last = med ;
dr =med - 1 ;
}
else
st = med + 1 ;
}
return last ;
}
int main()
{
in >> N >> k ;
for(int i = 1 ; i <= N ; i++)
{
in >> v[i] ;
s = s + v[i] ;
}
val = bsL(1 , s) ;
out << val ;
return 0;
}