Pagini recente » Cod sursa (job #2104814) | Cod sursa (job #2315898) | Cod sursa (job #3170179) | Cod sursa (job #1033991) | Cod sursa (job #2073644)
#include <fstream>
using namespace std;
int a[16005], n, k;
/// cauta daca x apare intr-un vector
/// returneaza cea mai din dreapta pozitie
bool SeImparte (int v)
{
int i, nrsecv=1, s=0;
for (i=1; i<=n; i++)
{
if(a[i] > v) return false;
if (s+a[i]<=v) s+=a[i];
else
{
nrsecv++;
s=a[i];
}
}
if(nrsecv>k) return false;
return true;
}
int CautBin ()
{
int st, dr, v, p=-1;
st=1;
dr=256000000;
while (st<=dr)
{
v=(st+dr)/2;
if (SeImparte(v))
{
p=v;
dr=v-1;
}
else st=v+1;
}
return p;
}
int main()
{
int i;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
fin >> n >> k;
for (i=1; i<=n; i++)
fin >> a[i];
fout << CautBin();
fout.close();
return 0;
}