Pagini recente » Cod sursa (job #716387) | Cod sursa (job #3170339) | Cod sursa (job #3281510) | Cod sursa (job #736859) | Cod sursa (job #2483296)
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
const int NMax = 16000;
const int oo = 16000*16000;
int X[NMax + 5],N,K,Max = 0,Sol = -1;
void Read()
{
fin >> N >> K;
for(int i = 1; i <= N; ++i)
fin >> X[i],Max = max(Max,X[i]);
}
int Check(int C)
{
int Nr = 0;
int i,z;
z=C;
for(i=1;i<=N;i++)
{
if(z-X[i]<=0)
{
Nr++;
z=C;
}
z -= X[i];
}
return (Nr <= K);
}
void Solve()
{
int Left = Max, Right = oo;
while(Left <= Right)
{
int Mid = (Left + Right)/2;
if(Check(Mid))
{
Sol = Mid;
Right = Mid - 1;
}
else
Left = Mid + 1;
}
}
void Print()
{
fout << Sol << "\n";
}
int main()
{
Read();
Solve();
Print();
return 0;
}