Pagini recente » Cod sursa (job #3277433) | Cod sursa (job #2210659) | Cod sursa (job #1727215) | Cod sursa (job #895062) | Cod sursa (job #3206395)
#include <fstream>
using namespace std;
int N = 16000;
bool incap(int n, int v[], int c, int kmax)
{
int s = 0;
for (int i = 0; i < n; i ++)
{
if (v[i] > c)
{
return false;
}
s += v[i];
if (s > c)
{
kmax --;
s = v[i];
}
}
return (kmax > 0);
}
int caut_bin(int n, int v[], int st, int dr, int kmax)
{
int r = dr + 1;
while (st <= dr)
{
int m = (st + dr) / 2;
if (incap(n, v, m, kmax))
{
r = m;
dr = m - 1;
}
else
{
st = m + 1;
}
}
return r;
}
int main()
{
ifstream in("transport.in");
ofstream out("transport.out");
int n, k;
in >> n >> k;
int v[N];
for (int i = 0; i < n; i ++)
{
in >> v[i];
}
out << caut_bin(n, v, 1, N * N, k);
in.close();
out.close();
return 0;
}