rt,用了int128也没用
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL inf=1e18+7;
const int maxn=2e5+7;
LL N,C,h[maxn];
LL f[maxn];
LL q[maxn<<1],head=1,tail=0;
LL F(LL inx){return f[inx]+h[inx]*h[inx];}
int main(){
scanf("%lld %lld",&N,&C);
for(int i=1;i<=N;i++)scanf("%lld",&h[i]);
q[++tail]=1;
for(int i=2;i<=N;i++){
LL xx=2*h[i];
while(tail-head+1>1&&F(q[head+1])-F(q[head])<=xx*(h[q[head+1]]-h[q[head]]))++head;
f[i]=f[q[head]]+(h[i]-h[q[head]])*(h[i]-h[q[head]])+C;
while(tail-head+1>1&&F(q[tail])-F(q[tail-1])*(h[i]-h[q[tail]])>=(F(i)-F(q[tail]))*(h[q[tail]]-h[q[tail-1]]))--tail;
q[++tail]=i;
}
printf("%lld",f[N]);
return 0;
}