Pagini recente » Cod sursa (job #3140577) | Cod sursa (job #1990313) | Cod sursa (job #447286) | Cod sursa (job #330987) | Cod sursa (job #540483)
Cod sursa(job #540483)
#include<fstream>
#include<algorithm>
#include<climits>
using namespace std;
ofstream fout("transport.out");
void read();
void cauta(int, int);
int verif(int val);
int mij;
int n, k, c, rez;
int a[16005],sum;
int main()
{
read();
cauta( a[1], sum);
fout.close();
return 0;
}
void read()
{
ifstream fin("transport.in");
fin >> n >> k;
for(int i = 1; i <= n; ++i)
{
fin >> a[i];
sum += a[i];
}
fin.close();
}
void cauta(int st, int dr)
{
mij = (st + dr) / 2;
int rasp = verif(mij);
if( st < dr && rez != mij)
{
rez = mij;
if( rasp == 1)
cauta(st, mij);
else
cauta(mij+1 , dr);
}
else
fout << mij;
}
int verif(int val)
{
int cont = 1, s = 0;
for(int i = 1; i <= n && a[i] <= val; ++i)
{
if( s + a[i] <= val)
s = s+ a[i];
else
{
--i;
s = 0;
++cont;
}
}
if( cont > k)
return -1;
else
if( cont <= k)
return 1;
}