Cod sursa(job #378928)
#include <algorithm>
using namespace std;
#define MAX 100000000000ll
#define ll long long
#define DIM 100005
ll a[DIM];
int n,k;
void read ()
{
int i;
scanf ("%d%d",&k,&n);
for (i=1; i<=n; ++i)
scanf ("%lld",&a[i]);
}
int check (ll val)
{
int i,nrl;
ll nrc;
for (nrl=0, nrc=1, i=1; i<=n; ++i)
if (a[i]>=val)
++nrl;
else
{
nrc+=a[i];
if (nrc>=val)
{
nrc-=val;
++nrl;
}
}
if (nrl>=k)
return 1;
return 0;
}
void solve ()
{
ll st,dr,mij,sol;
for (st=sol=1, dr=MAX; st<=dr; )
{
mij=(st+dr)/2;
if (check (mij))
{
sol=mij;
st=mij+1;
}
else
dr=mij-1;
}
printf ("%lld",sol);
}
int main ()
{
freopen ("grupuri.in","r",stdin);
freopen ("grupuri.out","w",stdout);
read ();
solve ();
return 0;
}