Pagini recente » Cod sursa (job #1360653) | Cod sursa (job #2498650) | Cod sursa (job #1022229) | Cod sursa (job #877815) | Cod sursa (job #2979560)
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int v[30001];
int n,k,i,st,dr,m,x,vmax=-1,sum=0,sol=0;
int calz(int cap)
{
int j,s=0,zile=0;
for(j=1;j<=n;j++)
{
if(s+v[j]<=cap)
{
s+=v[j];
}
else if(s+v[j]>cap)
{
zile++;
s=v[j];
}
}
if(s>0)
zile++;
return zile;
}
int main()
{
fin>>n>>k;
sum=0;
for(i=1;i<=n;i++)
{
fin>>v[i];
sum+=v[i];
if(v[i]>vmax)
vmax=v[i];
}
st=vmax;
dr=sum;
while(st<=dr)
{
m=(st+dr)/2;
x=calz(m);
if(x>k)
{
st=m+1;
}
else{
dr=m-1;
sol=m;
}
}
fout<<sol;
return 0;
}