Pagini recente » Cod sursa (job #1428501) | Cod sursa (job #2547438) | Cod sursa (job #1379679) | Cod sursa (job #832149) | Cod sursa (job #1568704)
#include<fstream>
using namespace std;
int v[16005];
int n,k;
bool verificare(int capacitate) {
int suma=0;
int camioane=1;
for(int i=1;i<=n;++i)
{
if(suma+v[i]<=capacitate){
suma+=v[i];
}
else{
suma=v[i];
++camioane;
}
}
return camioane<=k;
}
int main()
{
ifstream cin("transport.in");
ofstream cout("transport.out");
int max=0,s=0;
cin>>n>>k;
for(int i=1;i<=n;++i)
{
cin>>v[i];
s+=v[i];
if(v[i]>max)
max=v[i];
}
int st=max,dr=s,ans;
if(k==n)
{
cout<<max;
return 0;
}
else{
while(st<dr)
{
int mij=(st+dr)/2;
if(verificare(mij)==1)
{
ans=mij;
dr=mij;
}
else
st=mij+1;
mij=(st+dr)/2;
}
cout<<ans;
return 0;
}
}