Pagini recente » Cod sursa (job #2742364) | Cod sursa (job #1837249) | Istoria paginii runda/eusebiu1/clasament | Autentificare | Cod sursa (job #1539087)
#include<fstream>
using namespace std;
int v[100];
int n, k;
bool verificaCapacitate(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) ans=max;
else{
while(st<dr)
{
int mij =(st+dr)/2;
if(verificaCapacitate(mij)==1)
{
ans = mij;
dr=mij;
}
else{
st=mij+1;
}
mij=(st+dr)/2;
}
}
cout << ans;
return 0;
}