Pagini recente » Borderou de evaluare (job #1036398) | Cod sursa (job #2784342) | Cod sursa (job #818447) | Cod sursa (job #2910666) | Cod sursa (job #3274300)
#include <bits/stdc++.h>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int main() {
int n, k;
f >> n >> k;
long long v[n+1];
long long s = 0;
for( int i = 1; i <= n; ++i )
{
f >> v[i];
s += v[i];
}
long long st = 1, dr = s, mij, ras = s;
while( st < dr )
{
mij = st + (dr-st)/2;
///[st, mij] [mij+1, dr]
int cnt = 0;
long long q = 0;
for( int i = 1; i <= n; ++i )
{
if( q + v[i] > mij )
++cnt, q = 0;
q += v[i];
}
++cnt;
//cout << mij << " " << cnt << "\n";
if( cnt <= k )
ras = mij, dr = mij;
else
st = mij+1;
}
g << ras;
return 0;
}