Pagini recente » Cod sursa (job #2933903) | Cod sursa (job #2908212) | Borderou de evaluare (job #2772025) | Cod sursa (job #2637177) | Cod sursa (job #2683996)
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n, k, s, trips, lf=16001, rg=0, ans=-1, med;
int volum[16000];
bool FitMatress(int VanCap)
{
s=0;
trips=0;
for(int i=0; i<n; i++)
{
s=s+volum[i];
if(s>VanCap)
{
trips++;
s=0;
s=s+volum[i];
}
}
trips++;
if(trips<=k)
return true;
else return false;
}
int BinSearch(int lf, int rg)
{
while(lf<=rg)
{
med=(lf+rg)/2;
if(FitMatress(med))
{
ans=med;
rg=med-1;
}
else
lf=med+1;
}
return ans;
}
int main()
{
fin>>n>>k;
for(int i=0; i<n; i++)
{
fin>>volum[i];
if(volum[i]<lf)
lf=volum[i];
}
for(int i=0; i<n; i++)
rg=rg+volum[i];
fout<<BinSearch(lf, rg);
return 0;
}