Pagini recente » Cod sursa (job #1177337) | Cod sursa (job #2969242) | Cod sursa (job #3277524) | Cod sursa (job #2391298) | Cod sursa (job #2871108)
#include <fstream>
#define NMAX 16000
#define int long long
using namespace std;
int n;
int v[NMAX + 1];
int check(int x){
int sum = 0, nrt = 1;
for (int i = 1; i <= n; i++){
if (sum + v[i] <= x)
sum += v[i];
else
sum = v[i], nrt ++;
}
return nrt;
}
signed main(){
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int maxx, k, s;
fin >> n >> k;
s = 0;
maxx = 0;
for (int i = 1; i <= n; i++){
fin >> v[i];
s += v[i];
maxx = max (v[i], maxx);
}
int st, dr;
st = maxx, dr = s;
int sol = -1;
while (st <= dr){
int mij = (st + dr) / 2;
if (check(mij) <= k){
dr = mij - 1;
sol = mij;
}
else st = mij + 1;
}
fout << sol;
return 0;
}