Pagini recente » Cod sursa (job #1772922) | Cod sursa (job #193034) | Cod sursa (job #142761) | Cod sursa (job #2682283) | Cod sursa (job #2600650)
#include<bits/stdc++.h>
using namespace std;
int st[16005],n,v[16005],k;
void cpy()
{
int l=0;
for ( int i = n ; i >= 1 ; i-- )
st[++l] = v[i];
}
bool check ( int ans )
{
int l = n,dr = 0;
while ( dr <= k && l >= 1 ){
int s = 0;
while ( s + st[l] <= ans ){
s += st[l];
l--;
}
dr++;
}
if ( dr <= k )
return true;
return false;
}
int cb ( int minim , int maxim )
{
int st = minim , dr = maxim;
while ( st < dr - 1 ){
int mij = ( st + dr ) / 2;
if ( check(mij) == true ){
dr = mij;
}
else
st = mij;
}
if ( check(st) == true )
return st;
return dr;
}
ifstream in("transport.in");
ofstream out("transport.out");
int main()
{
in>>n>>k;
int mini=0,maxi=0;
in>>v[1];
mini = maxi = v[1];
for ( int i = 2 ; i <= n ; i++ ){
in>>v[i];
maxi += v[i];
if ( mini > v[i] )
mini = v[i];
}
cpy();
out<<cb(mini,maxi);
return 0;
}