#include "shoes.h"
#include <cstdio>
#include <cassert>
#include <bits/stdc++.h>
using namespace std;
//#include "shoes.h"
long long MAXVAL;
const int N=2e5+5;
int tree[4*N];
void update(int idx,int val){
while(idx<=MAXVAL){
tree[idx]+=val;
idx+=(idx&(-idx));
}
}
int read(int idx){
int sum=0;
while(idx>0){
sum+=tree[idx];
idx=idx-(idx&(-idx));
}
return sum;
}
long long count_swaps(vector<int> s) {
long long n=s.size()/2;
long long bati[2*n+1];
MAXVAL=2*n+1;
vector<int>mc(n+1);
int ka=1;
map<int,queue<int>>mp;
for(int i=1; i<=2*n; i++){
bati[i]=s[i-1];
if(bati[i]<0){
mc[ka]=i;
ka++;
}
else{
mp[bati[i]].push(i);
}
}
// for(int i=1; i<=2*n; i++){
// queue<int>q=mp[bati[i]];
// cout<<q.front()<<endl;
// }
if(n==1){
if(s[0]<0 && s[1]>0){
return 0;
}
else return 1;
}
long long cnt=0;
// for(int i=0; i<2*n; i++){
// }
for(int i=0; i<n; i++){
if(!(abs(s[i])==s[i+n] && s[i]<0)){
cnt=1;
break;
}
}
if(cnt==0){
return (n*(n-1)/2);
}
int c[2*n+1];
fill(c,c+2*n+1,0);
long long ans=0;
int k=0;
// for(int i=1; i<=2*n; i++){
//
// }
vector<pair<int,int>>v(n);
//cout<<n<<endl;
for(int i=1; i<=n; i++){
int a=mc[i];
int aa=(-1)*bati[a];
//queue<int>q=mp[aa];
int b=mp[aa].front();
//cout<<b<<" "<<i<<endl;
mp[aa].pop();
//mp[aa]=q;
v[i-1]={a,b};
}
//sort(v.begin(),v.end());
// for(int i=0; i<n; i++){
// cout<<v[i].first<<" "<<v[i].second<<endl;
// }
for(int i=0; i<n; i++){
int a=v[i].first;
int b=v[i].second;
//cout<<a<<" "<<b<<endl;
//k++;
int y=read(b);
//cout<<y<<" ";
long long ans1=abs(a-(b+y))-1;
if(b+y<a){
ans1++;
}
//cout<<ans1<<endl;
ans+=ans1;
update(min(a,b),+1);
update(max(b,a)+1,-1);
}
return ans;
}