Pagini recente » Cod sursa (job #321345) | Cod sursa (job #892466) | Cod sursa (job #2897891) | Cod sursa (job #1640679) | Cod sursa (job #2676976)
#include <fstream>
using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
long long v[16001],z,n,cmax;
bool Verificare (long long m)
{
int i,km,ok;
ok=0;
km=m;
i=1;
if (m<cmax)
return false;
for (i=1;i<=n;++i)
{
if (km<v[i])
{
ok++;
km=m;
}
if (km>=v[i])
{
km=km-v[i];
}
}
ok++;
if (ok<=z)
return true;
return false;
}
int main()
{
long long i,st,dr,m;
fin >>n>>z;
cmax=-1;
for (i=1;i<=n;++i)
{
fin >>v[i];
if (v[i]>cmax)
cmax=v[i];
}
st=1;
dr=cmax*z;
while (st<=dr)
{
m=(st+dr)/2;
if (Verificare (m)==true)
{
if (Verificare (m-1)==false)
{
st=dr+1;
}
else
dr=m-1;
}
else
st=m+1;
}
fout <<m;
fin.close ();
fout.close ();
return 0;
}