Pagini recente » Cod sursa (job #358270) | Cod sursa (job #1109734) | Cod sursa (job #2602800) | Cod sursa (job #2980993) | Cod sursa (job #2620663)
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
#define nmax 16003
int n,capacitate,v[nmax],capacitate_maxima,suma_saltele,solutie;
int verificare(int Maxx)
{
int s=0,nr=1;
for(int i=0; i<=n && nr<=capacitate; ++i)
{
s+=v[i];
if(s>Maxx)
{
s=v[i];
nr++;
}
}
if(nr<=capacitate) return 1;
return 0;
}
void cautare_binara(int st, int dr)
{
while(st <= dr)
{
int mij = (st+dr)/2;
if(verificare(mij)==1)
{
solutie=mij;
dr = mij -1;
}
else
{
st = mij+1;
}
}
}
int main()
{
f>>n>>capacitate;
for(int i=1; i<=n; ++i)
{
f>>v[i];
suma_saltele+=v[i];
if(v[i]>capacitate_maxima) capacitate_maxima=v[i];
}
cautare_binara(capacitate_maxima,suma_saltele);
g<<solutie;
return 0;
}