Pagini recente » Cod sursa (job #672089) | Cod sursa (job #1517069) | Cod sursa (job #1930429) | Cod sursa (job #284887) | Cod sursa (job #624973)
Cod sursa(job #624973)
#include<cstdio>
const int MAX_N = 16000 ;
int n,k;
int v[MAX_N];
bool verif(int x)
{
int suma=0,nr=1;
for(int i=1;i<=n;++i)
{
if(v[i]>x) return false;
if(suma+v[i]<x)
suma+=v[i];
else
{
if(suma+v[i]==x)
{
nr++;
suma=0;
}
else
{
nr++;
suma=v[i];
}
}
}
return nr<=k ;
}
int main()
{
int sol;
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d",&n,&k);
int dr=0;
for(int i=1;i<=n;++i)
{
scanf("%d",&v[i]);
dr+=v[i];
}
int st=1 ;
while(st<=dr)
{
int m = (st+dr) /2 ;
if( verif(m) )
{
sol=m;
dr=m-1;
}
else
st=m+1;
}
printf("%d\n",sol);
return 0;
}