Pagini recente » Cod sursa (job #641751) | Cod sursa (job #2544669) | Cod sursa (job #2139398) | Cod sursa (job #2197000) | Cod sursa (job #2925610)
#include <fstream>
using namespace std;
int s[16001];
int main()
{
ifstream cin("transport.in");
ofstream cout("transport.out");
int st, dr, c, mij, n, k, t, mini, maxi, cmin;
cin>>n>>k;
maxi=0;
mini=0;
for (int i=1; i<=n; i++)
{
cin>>s[i];
maxi+=s[i];
mini=max(mini, s[i]);
///capacitatea camionului ia valori de la mini (vol max al unei saltele) la maxi (suma vol saltelelor)
}
st=mini;
dr=maxi;
cmin=maxi+1;
while (st<=dr)
{
mij=(dr+st)/2;
///mij este acum capacitatea
t=1;
c=0;
for (int i=1; i<=n; i++)
{
if (c+s[i]<=mij)
c+=s[i];
else
{
t++;
c=s[i];
}
}
if (t<=k)
{
dr=mij-1;
cmin=mij;
}
else
st=mij+1;
}
cout<<cmin;
return 0;
}