#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#define ll long long
#define N 1000010
using namespace std;
ll n,m,cnt,a[N],num[N],l=1,r=1e14,ans,pls,i,i2;
bool check(ll x){
ll over=sqrt(x)+1,cnt=0;
pls=0,i=0,i2=0;
memset(num,0,sizeof num);
for(ll j=n;j>=1;j--){
if(num[j+1]){
pls+=num[j+1];
i+=num[j+1]*(j+1);
i2+=num[j+1]*(j+1)*(j+1);
}
if(((j+over)<=n)&&num[j+over]){
pls-=num[j+over];
i-=num[j+over]*(j+over);
i2-=num[j+over]*(j+over)*(j+over);
}
ll ah=1ll*pls*x-i2+2ll*i*j-1ll*pls*j*j;
if(ah<=a[j]){
num[j]=(a[j]-ah)/x+1;
cnt+=num[j];
}
if(m<cnt)return 0;
}
return 1;
}
int main(){
//freopen("C:/zez.txt","r",stdin);
scanf("%llld%lld",&n,&m);
for(ll i=1;i<=n;i++){
scanf("%lld",&a[i]);
}
while(l<=r){
ll mid=(l+r)>>1;
if(check(mid)){
ans=mid;
r=mid-1;
}
else l=mid+1;
}
cout<<ans;
}