Pagini recente » Cod sursa (job #2752996) | Cod sursa (job #1240762) | Cod sursa (job #2185805) | Cod sursa (job #746555) | Cod sursa (job #471850)
Cod sursa(job #471850)
#include <fstream>
#include <stack>
using namespace std;
const int INF = 1 << 20;
const int SIZE = 16001;
ifstream fin("transport.in");
ofstream fout("transport.out");
void Read();
void Solve();
bool Test(int x);
void Write();
int n, k, mn;
int v[SIZE];
int main()
{
Read();
Solve();
Write();
}
void Read()
{
fin >> n >> k;
for (int i = 1; i <= n; ++i)
fin >> v[i];
}
void Solve()
{
int step;
for (step = 1; step << 1 <= INF; step <<= 1);
for (int i = INF; step; step >>= 1)
if (i - step >= 0 && Test(i - step))
i -= step, mn = i;
}
bool Test(int x)
{
int now = 0, how = 1;
for (int i = 1; i <= n; ++i)
{
if (v[i] > x) return false;
if (v[i] + now <= x) now += v[i];
else ++how, now = v[i];
if (how > k) return false;
}
return true;
}
void Write()
{
fout << mn;
}