Pagini recente » Cod sursa (job #925103) | Cod sursa (job #615333) | Cod sursa (job #1990861) | Cod sursa (job #2553274) | Cod sursa (job #892572)
Cod sursa(job #892572)
#include<cstdio>
int i,sumval,v[16001],n,k,max,raspp,z;
int valid(int pp)
{
int cnt,j=1,sum;
cnt=0;
for(j=1;j<=n;j++)
if(sum+v[j]<=pp)
sum+=v[j];
else
{
if(v[j]>pp)
return 0;
sum=v[j];
++cnt;
}
if(cnt>k)
return 0;
return 1;
}
int cautbin(int x)
{
int p=0,pas=1<<14,q=0,qwer,val;
while(pas!=0)
{
qwer=valid(p);
if(qwer)
val=1;
if(p+pas<x && !qwer)
p+=pas;
q+=pas;
pas/=2;
}
if(p!=q && p!=x && val)
return p;
return 0;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
{
scanf("%d",&v[i]);
sumval+=v[i];
}
z=sumval;
while(cautbin(z))
{
z=cautbin(z);
raspp=z;
//printf("%d\n",raspp);
}
printf("%d",raspp);
}