Pagini recente » Cod sursa (job #2425069) | Cod sursa (job #2746998) | Cod sursa (job #1502858) | Cod sursa (job #175788) | Cod sursa (job #430127)
Cod sursa(job #430127)
#include <fstream>
#define INF 16001
using namespace std;
long long n, k(INF), T;
int a[INF];
long v, vmax = -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];
v += a[i];
if ( a[i] > vmax) vmax = a[i];
}
fin.close();
}
void Solve()
{
int i, mij;
int st = vmax, dr = v;
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();
}