#include<bits/stdc++.h>
#define rg register int
#define ll __int128
using namespace std;
const int N=100011;
int n;
ll w[N],h[N];
ll f[N],s[N];
int a[N];
int q[N],tail;
inline ll X(int i)
{
return h[i];
}
inline ll Y(int i)
{
return f[i]-s[i]+h[i]*h[i];
}
inline ll K(int i)
{
return 2*h[i];
}
inline bool xj(ll lx,ll ly,ll rx,ll ry)
{
return lx*ry<rx*ly;
}
inline bool cmp(int l,int r)
{
if(X(l)==X(r)) return Y(l)>Y(r);
return X(l)<X(r);
}
inline void aa(int L,int R)
{
if(L==R) return ;
int MID=(L+R)>>1;
aa(L,MID);
for(rg i=L;i<=MID;i++) a[i]=i;
sort(a+L,a+MID+1,cmp);
tail=1;
q[1]=a[L];
for(rg i=L+1;i<=MID;i++)
{
while(tail>1&&xj(X(q[tail])-X(q[tail-1]),Y(q[tail])-Y(q[tail-1]),X(a[i])-X(q[tail-1]),Y(a[i])-Y(q[tail-1]))) tail--;
q[++tail]=a[i];
}
for(rg i=MID+1;i<=R;i++)
{
int l=1,r=tail,mid;
while(l<r)
{
mid=(l+r+1)>>1;
if(X(q[mid-1])-X(q[mid])>=0)
{
if(X(q[mid-1])-X(q[mid])==0) l=mid;
else
if(Y(q[mid-1])-Y(q[mid])<K(i)*(X(q[mid-1])-X(q[mid]))) l=mid;
else r=mid-1;
}
else
{
if(Y(q[mid-1])-Y(q[mid])>K(i)*(X(q[mid-1])-X(q[mid]))) l=mid;
else r=mid-1;
}
}
f[i]=min(f[i],f[q[l]]+s[i-1]-s[q[l]]+(h[i]-h[q[l]])*(h[i]-h[q[l]]));
}
aa(MID+1,R);
}
inline ll rd()
{
ll ss=0,ww=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-') ww=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
ss=(ss<<1)+(ss<<3)+(ch^48);
ch=getchar();
}
return ss*ww;
}
inline void wt(ll x)
{
if(x<0) putchar('-'),x=-x;
if(x>=10) wt(x/10);
putchar(x%10+'0');
}
int main()
{
n=rd();
for(rg i=1;i<=n;i++)
{
h[i]=rd();
}
s[0]=0;
for(rg i=1;i<=n;i++)
{
w[i]=rd();
s[i]=s[i-1]+w[i];
}
f[1]=0;
for(rg i=2;i<=n;i++) f[i]=1e30;
aa(1,n);
wt(f[n]);
return 0;
}