Pagini recente » Cod sursa (job #2761312) | Cod sursa (job #536107) | Cod sursa (job #1238590) | Cod sursa (job #683927) | Cod sursa (job #1525644)
#include <cstdio>
using namespace std;
int v[16005];
int main()
{
int n,k,max=0;
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d",&n,&k);
for(int i=0;i<n;++i)
{
scanf("%d",&v[i]);
if(max<v[i])
max=v[i];
}
if(k==n)
printf("%d",max);
else{
int st=max;
int dr=max*n;
int pst=0,pdr=dr;
while(st<=dr&&(pst!=st||pdr!=dr))
{
int i=0;
max=(st+dr)/2;
int nrd=0;
while(i<n)
{
int sum=v[i];
while(i<n&&sum<max)
{
++i;
sum+=v[i];
}
if(sum==max)
++i;
++nrd;
}
pst=st;
pdr=dr;
if(nrd>k)
st=max+1;
else
dr=max+1;
}
if(st<=dr)
printf("%d",max);
else
printf("%d",st);
}
return 0;
}