Pagini recente » Cod sursa (job #1502083) | Cod sursa (job #2897019) | Cod sursa (job #1482514) | Cod sursa (job #858418) | Cod sursa (job #356794)
Cod sursa(job #356794)
#include<cstdio>
int n,k;
const int N = 1<<15;
int v[1<<16];
bool transport ( int q)
{
int x=0,nr=1;
for (int i=1;i<=n;i++)
if (v[i]>q) return 0;
else if (x+v[i]<=q)
{
x+=v[i];
}
else
{
nr++;
x=v[i];
}
if (nr>k)
return 0;
return 1;
}
int cautare()
{
int i, pas=(1<<30);
for (i=0;pas;pas>>=1)
if (transport(i+pas)==0)
i+=pas;
return i+1;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d", &n , &k);
for (int i=1;i<=n;i++)
scanf("%d", &v[i]);
int o= cautare();
printf("%d", o);
return 0;
}