Pagini recente » Cod sursa (job #1422173) | Cod sursa (job #3362034) | Cod sursa (job #3361453) | Cod sursa (job #1422248) | Cod sursa (job #3363619)
#include <iostream>
#include <fstream>
using namespace std;
const int NMAX=16000;
int n,k,v[NMAX];
bool isvalidsize(int cap)
{
int tr=1,dim,i;
dim=cap;
for(i=0;i<n && tr<=k;i++)
{
if(dim>=v[i])
dim=dim-v[i];
else
{
tr++;
dim=cap-v[i];
}
}
return tr<=k;
}
int searchbin(int max, int sum)
{
int st,mij,dr;
st=max-1;
dr=sum;
while(dr-st>1)
{
mij=(st+dr)/2;
if(isvalidsize(mij))
dr=mij;
else
st=mij;
}
return dr;
}
int main()
{
ifstream fin("transport.in");
ofstream fout("transport.out");
fin>>n>>k;
int maxi=-1,sum=0;
for(int i=0;i<n;i++)
{
fin>>v[i];
if(v[i]>maxi)
maxi=v[i];
sum=sum+v[i];
}
fout<<searchbin(maxi,sum);
return 0;
}