Pagini recente » Cod sursa (job #1306489) | Cod sursa (job #384984) | Cod sursa (job #1663353) | Cod sursa (job #2549063) | Cod sursa (job #2149436)
#include <iostream>
#include<fstream>
using namespace std;
int n,k,v[16001],i,x,mxx,vol,a,z,ls,ld,mij,sol;
ifstream f("transport.in");
ofstream g("transport.out");
int main()
{
f>>n>>k;
for(i=1;i<=n;i++)
{
f>>v[i];
if(mxx<v[i])
mxx=v[i];
}
/** do
{
for(z=1;z<=n;z++)
{
while(vol<=mxx)
{
if(v[i+1]<mxx-vol)
vol+=v[++i];
a++;
vol=0;
z=i;
}
if(a>k)
{
mxx++;
a=0;
i=1;
}
}
while(a<1);
cout<<mxx;*/
ls=mxx;
ld=16001*16001;
while(ls<=ld)
{
mij=(ls+ld)/2;
int nrtrans=1;
int sum=0;
for(i=1;i<=n;i++)
{
if(v[i]<=mij-sum)
sum+=v[i];
else {nrtrans+=1;sum=v[i];}
}
if(nrtrans<=k)
{
ld=mij-1;
sol=mij;
}
else ls=mij+1;
}
g<<sol;
return 0;
}