#include #include #include using namespace std; typedef long long ll; typedef vector vi; struct BIT { int n; vi A; BIT(int _n) : n(_n), A(_n+1, 0) {} void update(int i, ll v) { // a[i] += v while (i <= n) A[i] += v, i += i&-i; } ll query(int i) { // sum_{j<=i} a[j] ll v = 0; while (i) v += A[i], i -= i&-i; return v; } }; int main() { int n; cin >> n; map> locsA, locsB; for (int i=0, x; i> x; locsA[x].push_back(i); } for (int i=0, x; i> x; locsB[x].push_back(i); } BIT ba(n+1), bb(n+1); ll res = 0; for (auto [val, la] : locsA) { vector lb = locsB[val]; // la, lb sorted for (int i=0; i < la.size(); i++) { res += abs((la[i] + ba.query(la[i]+1)) - (lb[i] + bb.query(lb[i]+1))); ba.update(la[i]+1, -1); bb.update(lb[i]+1, -1); } } cout << res << endl; return 0; }