Pagini recente » Cod sursa (job #2290727) | Cod sursa (job #623087) | Cod sursa (job #112112) | Cod sursa (job #2080756) | Cod sursa (job #963911)
Cod sursa(job #963911)
#include <cstdio>
using namespace std;
int i,aux,n,k,j,p,s,unu,t,m,dr,st,mij,sol;
int v[16010];
int verif(int x)
{
// printf("%d\n",x);
//printf("%d %d\n",st,dr);
int val=0,nr=0,i=1;
while(i<=n)
{
//if(v[i]>x) return 0;
val=0;
while(val+v[i]<=x){
val+=v[i];
i++;
}
nr++;
}
/* if(val!=v[n]) nr++;*/
//printf("%d--\n",nr);
if(nr<=k) return 1;
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]);
dr+=v[i];
if(v[i]>st)
st=v[i];
}
//verif(7);
// printf("%d %d\n",st,dr);
while(st<=dr )
{
mij=(st+dr)/2;
if (verif(mij)==0){
st=mij+1;
}
else
{
dr=mij-1;
sol=mij;
}
}
//printf("%d %d\n",st,dr);
printf("%d\n",sol);
}