Pagini recente » Cod sursa (job #1335815) | Cod sursa (job #823631) | Cod sursa (job #1894176) | Cod sursa (job #2453207) | Cod sursa (job #483019)
Cod sursa(job #483019)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f ("transport.in");
ofstream g ("transport.out");
const int MaxN=16001;
int N,K,s[16001];
long C,S,max1;
int rezolv(long m)
{
int i,nrt = 0;
long t = 0;
for( i = 1 ; i <= N ; i++ )
{
if( t + s[i] > m)
{
nrt++;
t = 0;
}
t += s[i];
}
if( t + s[i] <= m)
return nrt +1;
return nrt;
}
void binary_search(int st, int dr)
{
long m;
int nrt;
if( st <= dr)
{
m = (st + dr)/2;
nrt = rezolv(m);
if(nrt <= K)
{
C = m;
binary_search(st,m-1);
}
else
binary_search(m+1,dr);
}
}
int main ()
{
f >> N >> K;
int i;
for( i = 1 ; i <= N ; i++ )
{
f >> s[i];
S += s[i];
if( max1 < s[i])
max1 = s[i];
}
binary_search(max1,S);
g << C << '\n';
f.close();
g.close();
return 0;
}