#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#define llu unsigned long long
#define MAXN (int)1e6+5
using namespace std;
int n;
llu a[MAXN],b[MAXN];
llu des[MAXN];
llu ra[MAXN];
llu plu[MAXN];
priority_queue<llu,vector<llu>,less<llu> > maxQue;
llu ans=0;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%llu",a+i);
for(int i=1;i<=n;i++)scanf("%llu",b+i);
sort(a+1,a+1+n);
sort(b+1,b+1+n);
for(int i=1;i<=n;i++){
des[i]=max(des[i-1]+1,a[i]);
}
int k=1;
for(int i=1;i<=n;i++){
while(k<=n&&a[k]<=des[i]){
maxQue.push(a[k]);
k++;
}
ra[i]=maxQue.top();
maxQue.pop();
}
for(int i=1;i<=n;i++)plu[i]=des[i]-ra[i];
for(int i=1;i<=n;i++)ans+=plu[i]*b[n-i+1];
printf("%llu",ans);
return 0;
}