Pagini recente » Rezultatele filtrării | Cod sursa (job #2552201)
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
bool verif(int v[],int n,int nr,int c)
{
int contor=1,i,s=0,ok=1;
for (i=1;i<=n;i++)
{
if (v[i]>c)
{
ok=0;
break;
}
else
{
s=s+v[i];
if (s>c)
{
contor++;
s=v[i];
}
if (contor>nr)
{
ok=0;
break;
}
}
}
if (ok==1) return true;
return false;
}
int main()
{
int n,nr,i,v[16005],st=1,dr=512000000,mij;
fin >> n >> nr;
for (i=1;i<=n;i++)
{
fin >> v[i];
}
while (st<dr)
{
mij=(st+dr)/2;
if (verif(v,n,nr,mij)==1) dr=mij;
else st=mij+1;
}
while (verif(v,n,nr,st-1)==1)
{
st=st-1;
}
fout << st;
}