P3195
#include<bits/stdc++.h>
using namespace std;
#define ull unsigned long long
typedef long long ll;
ll n,s,a[50005],b[50005],c[50005],f[50005],q[50005],l,r;
ll qy(ll x)
{
return f[x]+b[x]*b[x];
}
int main()
{
scanf("%lld%lld",&n,&s);
for(int i=1;i<=n;i++)
scanf("%lld",&c[i]);
for(int i=1;i<=n;i++)
c[i]+=c[i-1];
for(int i=1;i<=n;i++)
c[i]+=i;
for(int i=1;i<=n;i++)
a[i]=c[i];
for(int i=1;i<=n;i++)
b[i]=c[i]+s+1;
q[l=r=1]=0;
for(int i=1;i<=n;i++)
{
while(l<r&&qy(q[l+1])-qy(q[l])<=(b[q[l+1]]-b[q[l]])*2*a[i])
l++;
f[i]=qy(q[l])-2*a[i]*b[q[l]]+a[i]*a[i];
while(l<r&&(qy(q[r])-qy(q[r-1]))*(b[i]-b[q[r]])>=(qy(i)-qy(q[r]))*(b[q[r+1]]-b[q[r]]))
r--;
q[++r]=i;
}
return printf("%lld\n",f[n]),0;
}