Pagini recente » Cod sursa (job #432219) | Cod sursa (job #1740667) | Cod sursa (job #1327757) | Cod sursa (job #1634926) | Cod sursa (job #1830267)
#include <fstream>
#include <climits>
using namespace std;
int n,k,Max,s,sum,nr,v[16001],st,dr,i,mid,j,sol;
int main()
{
ifstream cin("transport.in");
ofstream cout("transport.out");
cin>>n>>k;
Max=0;
s=0;
for(i=1;i<=n;i++){
cin>>v[i];
if(v[i]>Max)
Max=v[i];
s=s+v[i];
}
st=Max;
dr=s;
while(st<=dr){
mid=(st+dr)/2;//capacitatea camionului
sum=0;
nr=1;
for(j=1;j<=n;j++){
if(sum+v[j]<=mid){
sum=sum+v[j];
}
else{
sum=v[j];
nr++;
}
}
if(nr<=k){
sol=mid;
dr=mid-1;
}
else
st=mid+1;
}
cout<<sol;
return 0;
}