#include<bits/stdc++.h>
#include "shoes.h"
using namespace std;
#define ll int
ll n,f[1000005],d;
queue<ll>vt[200005],vt1[200005];
long long ans;
bool kt[1000005];
void update(ll id,ll l,ll r,ll u,ll v)
{
    if(l>u||r<u)
        return;
    if(l==r)
    {
        f[id]+=v;
        return;
    }
    ll mid=(l+r)/2;
    update(id*2,l,mid,u,v);
    update(id*2+1,mid+1,r,u,v);
    f[id]=f[id*2]+f[id*2+1];
}
ll getsum(ll id,ll l,ll r,ll u,ll v)
{
    if(l>v||r<u)
        return 0;
    if(l>=u&&r<=v)
        return f[id];
    ll mid=(l+r)/2;
    return getsum(id*2,l,mid,u,v)+getsum(id*2+1,mid+1,r,u,v);
}
long long count_swaps(vector<int>s)
{
    n=s.size()/2;
    for(int i=1;i<=n;i++)
    {
        while(!vt[s[i]].empty())
            vt[s[i]].pop();
        while(!vt1[s[i]].empty())
            vt1[s[i]].pop();
    }
    ans=0;
    for(int i=0;i<s.size();i++)
        if(s[i]<0)
            vt[-s[i]].push(i);
        else
            vt1[s[i]].push(i);
    for(int i=0;i<s.size();i++)
        if(kt[i]==0)
        {
            if(s[i]>0)
            {
                d=vt[s[i]].front();
                vt[s[i]].pop();
                vt1[s[i]].pop();
                ans+=d-i-getsum(1,0,n*2-1,i,d-1);
                kt[d]=1;
                kt[i]=1;
                update(1,0,2*n-1,d,1);
            }
            else
            {
                d=vt1[-s[i]].front();
                vt1[-s[i]].pop();
                vt[-s[i]].pop();
                ans+=d-i-1-getsum(1,0,n*2-1,i,d-1);
                kt[d]=1;
                kt[i]=1;
                update(1,0,2*n-1,d,1);
            }
        }
    return ans;
}
//int main()
//{
//    cout<< count_swaps({2, 1, -1, -2});
//}
| # | 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... |