Pagini recente » Cod sursa (job #371985) | Cod sursa (job #1816647) | Cod sursa (job #1605212) | Cod sursa (job #3269447) | Cod sursa (job #2536949)
#include<iostream>
#include<fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
const int NMAX = 16005;
long long v[NMAX];
int main(){
int n,k;
in>>n>>k;
int p = 0;
int maxi = -1;
for(int i=1;i<=n;i++){
in>>v[i];
p+=v[i];
if(maxi < v[i])
maxi = v[i];
}
int st,dr,mij;
st = maxi;
dr = p;
long long rasp;
while(st<=dr){
mij = (st + dr)/2;
int cnt = 1;
long long s = 0;
for(int i=1;i<=n;i++){
s+=v[i];
if(s + v[i+1] > mij){
cnt++;
s = 0;
}
}
if(cnt <= k){
rasp = mij;
dr = mij - 1;
}
else
st = mij + 1;
}
out<<rasp;
return 0;
}