Pagini recente » Cod sursa (job #1328373) | Cod sursa (job #2869434) | Cod sursa (job #966311) | Cod sursa (job #1587204) | Cod sursa (job #1314074)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int st[16005];
int dr(int x, int n) //nr min de drumuri pe care le face un camion cu capacitatea x
{
int drum=0,s=0;
while(n)
{
if(s+st[n]<x)
{s=s+st[n]; n--;}
else
if(s+st[n]==x)
{drum++; s=0; n--;}
else
{drum++; s=0;}
}
if(s<x)
drum++;
return drum;
}
int main()
{ int k,i,mx,s,m,n;
f>>n>>k;
for(i=1;i<=n;i++)
{
f>>st[n-i+1];
if(st[n-i+1]>mx)
mx=st[n-i+1]; //cea mai voluminoasa saltea
s=s+st[n-i+1]; //suma volumelor tututor saltelelor
}
while(mx<=s)
{
m=(mx+s)/2;
if(dr(m,n)<=k)
s=m-1;
else
mx=m+1;
}
g<<mx;
f.close(); g.close();
return 0;
}