Pagini recente » Cod sursa (job #3360431) | Cod sursa (job #3360427) | Cod sursa (job #3360404) | Cod sursa (job #3360425) | Cod sursa (job #3360466)
#include <fstream>
#define NMAX 16000
#define KMAX 16000
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n,k,v[NMAX];
bool isvalsize(int cap){
int transp,dim,i;
transp=1;
dim=cap;
for(i=0;i<n && transp<=k;i++){
if(dim>=v[i])
dim-=v[i];
else{
transp++;
dim=cap-v[i];
}
}
return transp<=cap;
}
int binsearchsize(int maxi,int sum){
int st,dr,mij;
st=maxi-1;
dr=sum;
while(dr-st>1){
mij=(st+dr)/2;
if(isvalsize(mij))
dr=mij;
else
st=mij;
}
return dr;
}
int main()
{
int i,min,sum,ans,maxi;
fin>>n>>k;
maxi=sum=0;
for(i=0;i<n;i++){
fin>>v[i];
sum+=v[i];
if(v[i]>maxi)
maxi=v[i];
}
ans=binsearchsize(maxi,sum);
fout<<ans;
}