Pagini recente » Cod sursa (job #695874) | Cod sursa (job #187049) | Cod sursa (job #111941) | Cod sursa (job #2521504) | Cod sursa (job #390914)
Cod sursa(job #390914)
#include <fstream>
#define NMAX 16020
using namespace std;
int N, K, A[NMAX];
long long Sol = 16000*16000, Min;
void Citeste(void)
{
ifstream fin("transport.in");
int i;
fin >>N >>K;
for (i = 1; i <= N; i++)
{
fin >>A[i];
if (A[i] > Min) Min = A[i];
}
fin.close();
}
int nrCamioane(long long m)
{
int i, nc = 1, Gre = 0;
for (i = 1; i <= N; i++)
{
Gre += A[i];
if (Gre > m)
nc++, Gre = A[i];
}
return nc;
}
void CautaRez(void)
{
long long st = Min, end = 16000*16000, m;
int nc;
while (st <= end)
{
m = (st + end) / 2;
nc = nrCamioane(m);
if (nc <= K && m < Sol) Sol = m, end = m - 1;
if (nc > K) st = m + 1;
}
}
void Afiseaza(void)
{
ofstream fout("transport.out");
fout <<Sol;
fout.close();
}
int main()
{
Citeste();
CautaRez();
Afiseaza();
return 0;
}