Pagini recente » Cod sursa (job #2821652) | Cod sursa (job #654748) | Cod sursa (job #827490) | Cod sursa (job #1334569) | Cod sursa (job #2067808)
#include <fstream>
using namespace std;
int n,k,v[16001],nmax,s;
ifstream fin("transport.in");
ofstream fout("transport.out");
bool calc(int nr)
{
int pasi=1,aux=v[1];
for (int i=2; i<=n; i++)
{
if (aux+v[i]<=nr) aux=aux+v[i];
else {pasi++; aux=v[i];}
}
if (pasi<=k) return 1;
else return 0;
}
int main()
{
fin>>n>>k;
int ps=0,pd=0,mid=0;
for (int i=1; i<=n; i++)
{
fin>>v[i];
if (v[i]>nmax) nmax=v[i];
s+=v[i];
}
ps=nmax; pd=s;
while (ps<=pd)
{
mid=(ps+pd)/2;
if (calc(mid)) pd=mid-1;
else ps=mid+1;
}
fout<<ps;
return 0;
}