Pagini recente » Cod sursa (job #1572816) | Cod sursa (job #24974) | Cod sursa (job #274170) | Cod sursa (job #1633162) | Cod sursa (job #2631249)
#include <fstream>
using namespace std;
const int NMAX = 16000;
int n,k;
int x[1 + NMAX];
bool verific(int cap)
{
int i;
int nrD=0,capacitateCrt=0;
for(i=1;i<=NMAX;i++)
{
capacitateCrt+=x[i];
if(capacitateCrt>cap)
{
capacitateCrt=x[i];
nrD++;
}
}
nrD++;
if(nrD<=k)
return 1;
return 0;
}
int main()
{
ifstream f("transport.in");
ofstream g("transport.out");
int i, maxim = 0;
f>>n>>k;
for(i=1;i<=n;i++)
{
f>>x[i];
if(x[i]>maxim)
{
maxim=x[i];
}
}
int sol = 0;
int st=maxim,dr=NMAX*NMAX;
int mijloc;
while(st<=dr)
{
mijloc=(st+dr)/2;
if(verific(mijloc))
{
sol=mijloc;
dr=mijloc-1;
}
else
{
st=mijloc+1;
}
}
g<<sol<<endl;
return 0;
}