Pagini recente » Cod sursa (job #2241756) | Cod sursa (job #2103666) | Cod sursa (job #2801310) | Cod sursa (job #2706027) | Cod sursa (job #487091)
Cod sursa(job #487091)
#include <fstream>
using namespace std;
const char InFile[]="transport.in";
const char OutFile[]="transport.out";
const int MaxN=16010;
ifstream fin(InFile);
ofstream fout(OutFile);
int v[MaxN],n,k,u,p,m,sol;
bool is_good(int m)
{
int i=0;
int nrk=1;
int a=0;
while(i<n)
{
if(a+v[i]>m)
{
a=0;
++nrk;
}
a+=v[i];
++i;
}
if(a==0)
{
--nrk;
}
return nrk<=k;
}
int main()
{
fin>>n>>k;
p=MaxN;
for(register int i=0;i<n;++i)
{
fin>>v[i];
u+=v[i];
}
fin.close();
p=0;
while(p<=u)
{
m=p+(u-p)/2;
if(is_good(m))
{
sol=m;
u=m-1;
}
else
{
p=m+1;
}
}
fout<<sol;
fout.close();
return 0;
}