Pagini recente » Cod sursa (job #1649535) | Cod sursa (job #3274797) | Cod sursa (job #293225) | Cod sursa (job #3348332) | Cod sursa (job #3352215)
#include <fstream>
#define MAX 16000
using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int v[MAX];
int main() {
int n,k,i,j,st,dr,mij,s,sum,cnt,maxim;
fin>>n>>k;
s=0;
maxim=0;
for (i=0; i<n; i++) {
fin>>v[i];
s+=v[i];
if (maxim<v[i]) {
maxim=v[i];
}
}
st=maxim;
dr=s;
while (dr>=st) {
mij=(st+dr)/2;
//cout<<"st: "<<st<<" dr: "<<dr<<" mij: "<<mij<<endl;
cnt=0;
i=0;
while (i<n) {
cnt++;
//cout<<"cnt: "<<cnt<<" i: "<<i<<endl;
if (cnt>k) {
st=mij+1;
break;
}
sum=v[i];
j=i+1;
while (j<n && (sum+v[j])<=mij) {
sum+=v[j];
j++;
}
//cout<<"sum: "<<sum<<" j: "<<j<<endl;
i=j;
}
if (cnt<=k) {
dr=mij-1;
}
}
fout<<st<<endl;
return 0;
}