Pagini recente » Cod sursa (job #100783) | Cod sursa (job #3138993) | Cod sursa (job #2406236) | Cod sursa (job #1520825) | Cod sursa (job #648948)
Cod sursa(job #648948)
#include <fstream>
using namespace std;
short N, K, i, j, v[16010];
int S = 0;
void Citire ()
{
ifstream fin ("transport.in");
fin >> N >> K;
for (i = 0; i < N; i++)
{
fin >> v[i];
S += v[i];
}
fin.close ();
}
int Business (int numar)
{
short ordin = 0;
int cate = 0;
for (j = 0; j < N; j++)
{
if (v[j] > numar) return 0;
cate += v[j];
if (cate > numar)
{
ordin++;
cate = v[j];
}
if (ordin >= K) return 0;
}
return 1;
}
int Binary_Search ()
{
int step;
int index;
for (step = 1; step < S; step <<= 1);
for (index = step; step; step >>= 1)
{
if (Business (index - step)) index -= step;
}
return index;
}
void Scriere ()
{
ofstream fout ("transport.out");
S= Binary_Search ();
fout << S;
fout.close ();
}
int main ()
{
Citire ();
Scriere ();
return 0;
}