#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int MXN = 1e5+5;
int n, val[MXN];
int fen[MXN<<1];
vector<int> vec[MXN][2];
inline void upd(int p) {
    for(; p<=2*n; p+=p&-p) fen[p]++;
}
inline int get(int p) {
    int res=0;
    for(; p; p-=p&-p) res += fen[p];
    return res;
}
ll count_swaps(vector<int> S) {
    n = S.size();
    n >>= 1;
    for(int i=0; i<(n<<1); i++)
        vec[abs(S[i])][S[i]<0].push_back(i);
    int ptr=0;
    for(int x=1; x<=n; x++) {
        for(int i=0; i<vec[x][0].size(); i++) {
            S[vec[x][0][i]] = ++ptr;
            S[vec[x][1][i]] = -ptr;
        }
    }
    ptr = 0;
    ll ans = 0;
    for(int i=0; i<(n<<1); i++) {
        if(!val[abs(S[i])]) val[abs(S[i])] = ++ptr;
            ans += get(2*n+1 - 2*val[abs(S[i])]+(S[i]<0));
            upd(2*n+1 - 2*val[abs(S[i])]+(S[i]<0));
    }
    return ans;
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |