Pagini recente » Cod sursa (job #1434201) | Cod sursa (job #2085537) | Cod sursa (job #829927) | Cod sursa (job #50204) | Cod sursa (job #3256140)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
const int NMAX=16*1e3+2;
int v[NMAX];
int n,k;
int main()
{
fin>>n;
fin>>k;
int minim=INT_MAX,capmax=0,capmin=-1;
for(int i=1;i<=n;i++){
fin>>v[i];
capmax+=v[i];
capmin=max(capmin,v[i]);
}
//fout<<capmax<<" "<<capmin<<endl;
int st=capmin,dr=capmax,mij,l=1;
//fout<<"st="<<st<<" dr="<<dr<<endl;
while(st<=dr){
int nr=1,s=0;
mij=(st+dr)/2;
for(int i=1;i<=n;i++){
s+=v[i];
//fout<<s<<" "<<nr<<" i="<<i<<endl;
if(s>mij){
nr++;
s=0;
i--;//7 10 12 15
}
}
if(nr<=k){
dr=mij-1;
minim=min(mij,minim);
}
else if(nr>k){
st=mij+1;
}
//fout<<"nr="<<nr<<" minim="<<minim<<endl;
//fout<<"st="<<st<<" dr="<<dr<<" mij="<<mij<<endl;
}
fout<<minim;
return 0;
}