Pagini recente » Cod sursa (job #2491051) | Cod sursa (job #3186930) | Cod sursa (job #2333623) | Cod sursa (job #3178847) | Cod sursa (job #2546487)
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int v[16005],k,n,maxim=0;
int nrtransport(int x)
{
int cnt=0,p=0,i=1;
while(i<=n)
{
while(v[i]<=x-p && i<=n)
{
p=p+v[i];
i++;
}
p=0;
cnt++;
}
return cnt;
}
int camion(int s)
{
int st,dr,med,ans;
st=maxim;
dr=s;
while(st<=dr)
{
med=(st+dr)/2;
if(nrtransport(med)<=k)
{
dr=med-1;
ans=med;
}
else
{
st=med+1;
}
}
return ans;
}
int main()
{
int s=0;
in>>n;
in>>k;
for(int i=1;i<=n;i++)
{
in>>v[i];
s=s+v[i];
if(maxim<=v[i])
maxim=v[i];
}
out<<camion(s)<<'\n';
return 0;
}