#include "shoes.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int nx = 1e5 + 5;
int n, a[nx*2], ptr[2*nx], tree[2*nx];
vector<int> pos[nx*2];
bool del[nx*2];
int h(int idx) {
return idx + n + 1;
}
void update(int idx, int val) {
for (int i = idx; i < 2*nx; i += (i & -i)) {
tree[i] += val;
}
}
ll query(int idx) {
ll sum = 0;
for (int i = idx; i >= 1; i-=(i&-i)) {
sum += tree[i];
}
return sum;
}
long long count_swaps(vector<int> s) {
n = s.size() / 2;
for (int i = 1; i <= s.size(); i++) {
a[i] = s[i - 1];
update(i, 1);
pos[h(a[i])].emplace_back(i);
//cout << h(a[i]) << " ";
}
ll ans = 0;
for (int i = 1; i <= s.size(); i++) {
if (del[i]) continue;
int p1 = pos[h(a[i])][ptr[h(a[i])]];
//cout << p1 << " ";
ptr[h(a[i])]++;
int p2 = pos[h(-a[i])][ptr[h(-a[i])]];
//cout << p2 << " ";
ptr[h(-a[i])]++;
del[p1] = del[p2] = 1;
ll dist = (query(p2)-query(p1));
//cout << dist << " ";
update(p2, -1); update(p1, -1);
ans += dist;
if (a[i] < 0) ans--;
//cout << endl;
}
return ans;
}
/*
g++ grader.cpp shoes.cpp -o o
3
-3 2 1 -2 3 -1
*/