Pagini recente » Cod sursa (job #133390) | Istoria paginii runda/pregatire_lot_juniori_1 | Cod sursa (job #2001785) | Cod sursa (job #679945) | Cod sursa (job #2007337)
#include <algorithm>
#include <fstream>
#define INPUT_FILE "transport.in"
#define OUTPUT_FILE "transport.out"
#define DIMENSION 16010
using namespace std;
int n, k;
int v[DIMENSION];
int sum = 0;
int Max = 0;
void Read()
{
ifstream f(INPUT_FILE);
f >> n >> k;
for (int i = 1;i <= n;++i)
{
f >> v[i];
Max = max(Max, v[i]);
sum += v[i];
}
}
bool Verify(int x)
{
int cx = x;
int ck = k;
for (int i = 1;i <= n;++i)
{
cx -= v[i];
if (cx < 0)
{
ck--;
cx = x - v[i];
}
}
ck--;
if (ck < 0)
return false;
return true;
}
int BinarySearch()
{
int left = Max, right = sum;
int mij;
int sol;
while (left <= right)
{
mij = (left + right) / 2;
if (Verify(mij))
{
right = mij - 1;
sol = mij;
}
else
{
left = mij + 1;
}
}
return sol;
}
void Write()
{
ofstream g(OUTPUT_FILE);
g << BinarySearch() << "\n";
g.close();
}
int main()
{
Read();
Write();
return 0;
}