Pagini recente » Cod sursa (job #630650) | Cod sursa (job #2386315) | Cod sursa (job #2284815) | Cod sursa (job #2636348) | Cod sursa (job #211965)
Cod sursa(job #211965)
#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,int dr)
{
int m;
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(max,sumav));
return 0;
}