Pagini recente » Cod sursa (job #1908093) | Cod sursa (job #632779) | Cod sursa (job #2922994) | Cod sursa (job #753196) | Cod sursa (job #430112)
Cod sursa(job #430112)
#include <fstream>
#define INF 16001
using namespace std;
long long n, k(INF), T;
int a[INF];
ofstream fout("transport.out");
void Read();
void Write();
void Solve();
bool Verif(long s);
int main()
{
Read();
Solve();
Write();
return 0;
}
void Read()
{
ifstream fin("transport.in");
fin >> n >> T;
for ( int i = 1; i <= n; i++)
fin >> a[i];
fin.close();
}
void Solve()
{
int i, mij;
int st = 0, dr = INF;
while ( st <= dr)
{
mij = (st + dr) / 2;
if ( Verif(mij))
{
if ( k > mij) k = mij;
dr = mij - 1;
}
else
st = mij + 1;
}
}
bool Verif(long s)
{
int i = 1, t = 1, k1 = 0;
while ( i <= n)
{
if ( a[i] + k1 <= s)
k1 += a[i];
else
{
t++; k1 = a[i]; //transport nou
if ( t > T) return false;
}
i++;
}
return true;
}
void Write()
{
//ofstream fout("transport.out");
if ( k ) fout << k << '\n';
else fout << 1 << '\n';
fout.close();
}