Pagini recente » Cod sursa (job #2559954) | Cod sursa (job #3337759) | Borderou de evaluare (job #1629452) | Cod sursa (job #2916341) | Cod sursa (job #3304528)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int a[16000], n, k;
int verif(int val)
{
int j = 1, i = 1, s;
while (j <= k)
{
s = 0;
while (s + a[i] <= val && i <= n)
{
s += a[i];
i++;
}
if (i - 1 == n)
{
return 1;
}
j++;
}
return 0;
}
int caut(int a[], int lf, int rg)
{
int mid = (lf + rg) / 2;
if (lf > rg)
{
return 16000 * 16000 + 1;
}
if (verif(mid) == 1)
{
return min(mid, caut(a, lf, mid - 1));
}
else
{
return caut(a, mid + 1, rg);
}
}
int main()
{
int val = 0;
fin >> n >> k;
for (int i = 1; i <= n; i++)
{
fin >> a[i];
}
fout << caut(a, 1, 16000 * 16000);
return 0;
}