Pagini recente » Cod sursa (job #2086789) | Cod sursa (job #458302) | Cod sursa (job #2056997) | Cod sursa (job #2787580) | Cod sursa (job #392541)
Cod sursa(job #392541)
#include <cstdio>
#define ll long long
int a[100010], v[100010], k, n;
ll s;
int verif (ll x)
{
int i;
ll t=0, c;
for (i=1; i<=n; i++) v[i]=a[i];
if (v[1]>x) v[i]=x;
for (i=1; v[n]; )
{
for (c=x; i<=n; i++)
{
if (v[i]<=c)
{
c-=v[i];
v[i]=0;
} else
{
v[i]-=c;
c=0;
}
if (!c)
{
t++;
break;
}
}
}
return (t>=k);
}
ll search(ll l, ll r)
{
ll m, s=0;
while (l<=r)
{
m=(l+r)/2;
if (verif(m))
{
s=m;
l=m+1;
} else r=m-1;
}
return s;
}
int main()
{
freopen("grupuri.in","r",stdin);
freopen("grupuri.out","w",stdout);
scanf("%d %d",&k,&n);
int i;
for (i=1; i<=n; i++)
{
scanf("%d",&a[i]);
s+=a[i];
}
printf("%lld",search(0,s));
}