Pagini recente » Cod sursa (job #3183356) | Cod sursa (job #534715) | Cod sursa (job #2383119) | Cod sursa (job #3140252) | Cod sursa (job #2679636)
#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 k)
{
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 , k) ;
out << val ;
return 0;
}