Pagini recente » Cod sursa (job #828298) | Cod sursa (job #1938067) | Cod sursa (job #148927) | Statistici Gabriela Ion (Gabriela_4) | Cod sursa (job #203079)
Cod sursa(job #203079)
#include<stdio.h>
int n,k,ultima,rez=1<<30;
int v[16005];
int caut(int x)
{
int p=ultima+1,u=n,m;
while(p<u)
{
m=(p+u)>>1;
if(x<v[m])
u=m;
else
p=m+1;
}
if(v[p]>x)
p--;
if((v[p+1]<x)&&(p<n))
p++;
return p;
}
bool vezi(int x)
{
ultima=0;
for(int i=1; (i<=k)&&(ultima!=n); i++)
ultima=caut(x+v[ultima]);
if(ultima==n)
return true;
return false;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d",&n,&k);
int p=-5,u,m;
for(int i=1; i<=n; i++)
{
scanf("%d",&v[i]);
if(v[i]>p)
p=v[i];
v[i]+=v[i-1];
}
u=v[n];
//if(vezi(u))
// rez=u;
while(p<u)
{
m=(p+u)>>1;
if(vezi(m))
{
if(m<rez)
rez=m;
u=m;
}
else
p=m+1;
}
printf("%d\n",rez);
return 0;
}