#include<iostream>
#include<cmath>
#define ll long long
#define fo(i,x,y) for(int i=x;i<=y;++i)
using namespace std;
template<typename T>inline void in(T &x){
x=0;int f=0;char c=getchar();
for(;!isdigit(c);c=getchar())f|=(c=='-');
for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+(c^48);
x=f?-x:x;
}
template<typename T>inline void out(T x){
if(x<0)x=~x+1,putchar('-');
if(x>9)out(x/10);
putchar(x%10^48);
}
const int N=500005;
ll n,k;
ll m[N];
ll l,r,mid;
ll dp[N];
ll t,kp;
inline bool check(ll p){
t=0;
fo(i,1,n)dp[i]=m[i];
for(int i=n;i>=1;--i){
if(dp[i]<0)continue;
++t;
dp[i]-=p;
kp=i-sqrt(p);
fo(j,kp,i-1)dp[j]-=p-pow(i-j,2);
if(dp[i]>0||t>k)return 0;
}
return 1;
}
int main(){
in(n),in(k);
fo(i,1,n)in(m[i]);
l=0,r=5e15;
while(l<r){
mid=(l+r)>>1;
if(check(mid))r=mid;
else l=mid+1;
}
out(r);
return 0;
}