Pagini recente » Cod sursa (job #1247158) | Cod sursa (job #635521) | Cod sursa (job #446076) | Cod sursa (job #1217469) | Cod sursa (job #2026117)
//#include <iostream>
#include <fstream>
using namespace std;
int v[16005];
int camioane(int cant,int n,int k)
{
int drum=0,sum=0;
for(int i=1;i<=n;i++)
{
sum+=v[i];
if(sum>cant and sum<2*cant){
sum=v[i];
drum++;
}
else
if(sum>=2*cant)
return k+1;
}
if(sum<=cant and sum>0)
drum++;
return drum;
}
int main()
{
ifstream cin("transport.in");
ofstream cout("transport.out");
int ma=-1,sol=16005,n,k,st=1,dr=16000,mij;
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>v[i];
ma=max(v[i],ma);
}
while(st<=dr){
mij=(st+dr)/2;
int p=camioane(mij,n,k);
if(p<=k){
sol=min(sol,mij);
dr=(st+dr)/2-1;
}
else
st=(st+dr)/2+1;
}
cout<<sol;
return 0;
}