1 #include<cstdio>
2 #define ll long long
3 const int N=50010;
4 int c[N],n,L,q[N];
5 ll h[N],ans,f[N],m;
6 int l=0,r=0;
7 ll sqr(ll x){return x*x;}
8
9 double calc(int k,int j){
10 return (f[j]-f[k]+j*j-k*k+sqr(h[j])-sqr(h[k])+2*
11 (j*h[j]-k*h[k]+(j+h[j])*m-(k+h[k])*m))/((j-k+h[j]-h[k])+0.0);
12 }
13
14 void dp(){
15 for (int i=1;i<=n;i++){
16 double mid=calc(q[l],q[l+1]);
17 while(l<r&&calc(q[l],q[l+1])<=2*(i+h[i])) l++;
18 f[i]=f[q[l]]+sqr((i-q[l]+h[i]-h[q[l]]-L-1));
19 while(l<r&&calc(q[r-1],q[r])>calc(q[r],i)) r--;
20 q[++r]=i;
21 }
22 }
23
24 int main(){
25 scanf("%d%d",&n,&L);m=L+1;
26 for (int i=1;i<=n;i++){
27 scanf("%d",&c[i]);
28 h[i]=h[i-1]+c[i];
29 }
30 dp();
31 printf("%lld",f[n]);
32 }