Pagini recente » Istoria paginii runda/rf_3 | Cod sursa (job #2942070) | Cod sursa (job #1435278) | Cod sursa (job #1237239) | Cod sursa (job #494024)
Cod sursa(job #494024)
#include <stdio.h>
#include <math.h>
int v[10000],n,k;
int bs(int x)
{
int i,pas=1<<16;
for (i=0;pas;pas>>=1)
if (i+pas<=n && v[i+pas]<=x)
i+=pas;
return i;
}
bool ok(int x)
{
int i,j;
for (i=0,j=1;j<=k && i<=n;j++)
i=bs(v[i]+x);
return i==n;
}
int bsearch()
{
int i,pas;
pas=1<<28;
for (i=0;pas;pas>>=1)
if (!ok(i + pas))
i+=pas;
return i+1;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d",&n,&k);
int i;
for(i=1;i<=n;++i)
{
scanf("%d",v+i);
v[i]+=v[i-1];
}
i=bsearch();
printf("%d",i);
return 0;
}