Pagini recente » Cod sursa (job #1553436) | Cod sursa (job #3243295) | Cod sursa (job #3147368) | Cod sursa (job #1503139) | Cod sursa (job #929617)
Cod sursa(job #929617)
#include <fstream>
using namespace std;
int n, k, v[16005], i;
void citire ()
{
ifstream in ("transport.in");
in >> n >> k;
for (i = 1; i <= n; ++i)
in >> v[i];
in.close ();
}
void afis (long long rez)
{
ofstream out ("transport.out");
out << rez << '\n';
out.close ();
}
bool valid (long long m)
{
int val = m, k1 = k;
for (i = 1; i <= n && k1; ++i)
if (v[i] <= val)
val -= v[i];
else
{
--k1;
--i;
val = m;
}
if (i == n + 1)
return 1;
return 0;
}
int binary (long long inc, long long sf)
{
long long m;
while (inc <= sf)
{
m = (inc + sf) / 2;
if (valid (m))
sf = m - 1;
else
inc = m + 1;
}
return inc;
}
int main()
{
long long s;
citire ();
for (i = 1; i <= n; ++i)
s += v[i];
if (k == 1)
afis (s);
else
afis (binary (1, s * 2));
return 0;
}