#include "shoes.h"
#include <bits/stdc++.h>
#define maxn 100005
using namespace std;
int n, m;
int tmp[maxn];
vector<int> P[maxn];
vector<int> R;
int a[2*maxn], bit[2*maxn];
void upd(int u, int d) {
    for (int i = u; i > 0; i -= i & -i) bit[i] += d;
}
int get(int u) {
    int kq = 0;
    for (int i = u; i <= n+n; i += i & -i) kq += bit[i];
    return kq;
}
long long count_swaps(vector<int> s) {
	n = s.size()/2;
	for (int i = 0, id = 0; i < s.size(); i++)
        if (s[i] > 0) tmp[++id] = s[i];
    sort(tmp + 1, tmp + n + 1);
    m = unique(tmp + 1, tmp + n + 1) - tmp - 1;
    for (int i = 0; i < s.size(); i++) {
        int mult = (s[i] > 0 ? 1 : -1);
        s[i] = mult * (lower_bound(tmp + 1, tmp + m + 1, s[i]*mult) - tmp);
    }
    for (int i = 0; i < s.size(); i++) {
        if (s[i] < 0) R.emplace_back(i);
        else P[s[i]].emplace_back(i);
    }
    reverse(R.begin(), R.end());
    for (int i = 1; i <= m; i++) reverse(P[i].begin(), P[i].end());
    for (int i = 1; i <= 2*n; i += 2) {
        int H = R.back(); R.pop_back();
        a[H] = i;
        int spr = -s[H];
        a[P[spr].back()] = i+1;
        P[spr].pop_back();
    }
    int64_t inv = 0;
    for (int i = 0; i < 2*n; i++) {
        inv += get(a[i]+1);
        upd(a[i], 1);
    }
    return inv;
}
| # | 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... |