Pagini recente » Cod sursa (job #3246732) | Cod sursa (job #2254026) | Cod sursa (job #2916710) | Cod sursa (job #3137256) | Cod sursa (job #211963)
Cod sursa(job #211963)
#include <stdio.h>
int v[16000],n,nrt,c,max,sumav;
void citire()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d",&n,&nrt);
for (int i=1; i<=n; i++)
{
scanf("%d",&v[i]);
if (v[i]>max)
max=v[i];
sumav+=v[i];
}
}
int calcul(int q)
{
int s=0,nr=0,i=1;
while (i<=n)
{
if(s+v[i]<=q)
{
s+=v[i];
i++;
}
else
{
nr++;
s=0;
}
}
nr++;
return nr;
}
int cautbin()
{
int st,dr,m;
st=max; dr=sumav;
while (st!=dr)
{
m=(st+dr)/2;
if (calcul(m)>nrt)
st=m+1;
else
dr=m;
}
if (calcul(st)<=nrt)
return st;
return st+1;
}
int main()
{
citire();
printf("%d\n",cautbin());
return 0;
}