Pagini recente » Cod sursa (job #308653) | Cod sursa (job #972143) | Cod sursa (job #938333) | Cod sursa (job #2301622) | Cod sursa (job #1516757)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int n,k,v[16001];
int sum,nrmax;
void citeste()
{
in>>n>>k;
for(int i=1;i<=n;i++)
{
in>>v[i];
sum+=v[i];
if(nrmax<v[i])
nrmax=v[i];
}
}
int nrTransp(int c)
{
int x=v[1],nr=0;
for(int i=2;i<=n;i++)
{
if(x+v[i]<=c)
x+=v[i];
else
{
x=v[i];
nr++;
}
}
return ++nr;
}
int bs(int st,int dr)
{
int mij=st+(dr-st)/2;
if(nrTransp(mij)>k)
bs(mij+1,dr);
else
{
if(mij==st)
return mij;
else if(nrTransp(mij-1)>k)
return mij;
else
bs(st,mij-1);
}
}
int main()
{
citeste();
out<<bs(nrmax,sum);
return 0;
}