#include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; class BinaryIndexTree { public: vector bit; int N; BinaryIndexTree(int n) { N = n; for (int i = 0; i <= N; ++i) { bit.push_back(0); } } ll sum(int i) { ll ret = 0; while (i > 0) { ret += bit[i]; i -= i & -i; } return ret; } void add(int i, ll x) { while (i <= N) { bit[i] += x; i += i & -i; } } }; int main() { int N; cin >> N; vector A(N); vector B(N); set S; for (int i = 0; i < N; ++i) { cin >> A[i]; S.insert(A[i]); } for (int i = 0; i < N; ++i) { cin >> B[i]; S.insert(B[i]); } BinaryIndexTree bit(2 * N + 2); map M; int idx = 1; for (int s : S) { M[s] = idx; ++idx; } sort(A.begin(), A.end()); ll ans = 0; for (int i = 0; i < N; ++i) { int a = A[i]; int b = B[i]; int a_idx = M[a]; int b_idx = M[b]; bit.add(b_idx, 1); ans += bit.sum(a_idx - 1); } cout << ans << endl; return 0; }