#include <bits/stdc++.h>
using namespace std;
const int MOD = int(1e9) + 7;
const long long int MOD64 = (long long int)(1e18) + 7;
const int INF = 0x7fffffff;
const long long int INF64 = 0x7fffffffffffffff;
const int N = 2e5 + 10;
struct node {
  int x, v, ind;
} p[N];
bool compv(node a, node b) {
  if (a.v != b.v) {
    return a.v < b.v;
  } else
    return a.x < b.x;
}
bool compx(node a, node b) { return a.x < b.x; }
int n;
long long int sum[N], num[N];
int lowbit(int x) { return x & (-x); }
void update(int i, int k) {
  while (i <= N) {
    sum[i] += k;
    num[i] += 1;
    i += lowbit(i);
  }
}
pair<int, int> getsum(int i) {
  long long int a = 0, b = 0;
  while (i > 0) {
    a += sum[i];
    b += num[i];
    i -= lowbit(i);
  }
  return make_pair(a, b);
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (int i = int(1); i < int(n + 1); i++) {
    cin >> p[i].x;
  }
  for (int i = int(1); i < int(n + 1); i++) cin >> p[i].v;
  sort(p + 1, p + n + 1, compv);
  for (int i = int(1); i < int(n + 1); i++) p[i].ind = i;
  long long int ans = 0;
  sort(p + 1, p + n + 1, compx);
  memset(sum, 0, sizeof(sum));
  memset(num, 0, sizeof(num));
  for (int i = int(1); i < int(n + 1); i++) {
    pair<long long int, int> tmp = getsum(p[i].ind);
    ans += tmp.second * p[i].x - tmp.first;
    update(p[i].ind, p[i].x);
  }
  cout << ans << endl;
  return 0;
}
