Pagini recente » Cod sursa (job #1652915) | Cod sursa (job #2668739) | Cod sursa (job #502315) | Cod sursa (job #350813) | Cod sursa (job #40260)
Cod sursa(job #40260)
#include<stdio.h>
int max,s,a[16000],i,k,n;
int ver(int c)
{int s=0,nr=1;
for(i=1;i<=n;i++)
{if(s+a[i]>c) {s=0;nr++;if(nr>k) return 0;}
s=s+a[i];}
return 1;}
int caut(int st,int dr)
{int mij=(st+dr)/2,nr;
if(st>dr) return 0;
if(st==dr) return ver(st)?st:0;
if(ver(mij)) {nr=caut(st,mij-1);return nr?nr:mij;}
else return caut(mij+1,dr);}
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",&a[i]);
if(a[i]>max) max=a[i];
s=s+a[i];}
if(k==1) printf("%d",s);
else if(k>=n) printf("%d",max);
else
printf("%d",caut(max,s));
fclose(stdout);
return 0;}