Pagini recente » Cod sursa (job #661728) | Cod sursa (job #496280) | Cod sursa (job #3259232) | Cod sursa (job #1772889) | Cod sursa (job #3162784)
#include <iostream>
#include <fstream>
using namespace std;
int v[16001];
int verif(int x, int n, int k)
{
int i = 0, nr = 0, cant = 0;
for (i = 1; i <= n; i++)
{
if (cant + v[i] <= x)
{
cant += v[i];
}
else
{
if (v[i] > x)
{
return 0;
}
else
{
cant = v[i];
nr++;
}
}
}
if (nr + 1 <= k)
{
return 1;
}
return 0;
}
int main()
{
int rez, pas, n, k, i;
ifstream f("transport.in");
ofstream g("transport.out");
f >> n >> k;
for (i = 1; i <= n; i++)
{
f >> v[i];
}
pas = 1 << 30;
rez = 0;
while (pas)
{
if (!verif(rez + pas, n, k))
{
rez += pas;
}
pas /= 2;
}
g << rez + 1 << endl;
return 0;
}