Pagini recente » Cod sursa (job #2026874) | Cod sursa (job #2634121) | Cod sursa (job #1140737) | Cod sursa (job #1020899) | Cod sursa (job #316414)
Cod sursa(job #316414)
#include <stdio.h>
#define N 16001
int s[N],n,k;
int ok(int m)
{int i,j,l;
for (i=0,j=0,l=1;i<n;i++)
{if(j+s[i]>m)
{j=s[i];
l++;
if(l>k)return 0;
}
else
{j+=s[i];
}
}
return 1;
}
int cautare(int st,int dr)
{int s,d;
s=st;d=dr;
while(s!=d)
{if(ok((s+d)/2))
{d=(s+d)/2;
}
else
{s=(s+d)/2+1;
}
}
return s;
}
int main ()
{int e,i;
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d %d",&n,&k);
for (i=0,e=0;i<n;i++)
{scanf("%d",&s[i]);
e+=s[i];
}
e/=k;
printf("%d",cautare(e,3*e));
return 0;
}