#include<iostream>
#include<vector>
#include<algorithm>
#include<set>
using namespace std;
set<int> wrong_pos;
vector<vector<int>> positive(100001);
vector<vector<int>> negative(100001);
void create_adj(vector<int> &S){
    for(int i = 0; i < S.size(); i++){
        if(i % 2 == 0 && S[i] < 0){
            if(S[i+1] == abs(S[i])){
            }
            else{
                wrong_pos.insert(abs(S[i]));
                negative[abs(S[i])].push_back(i);
            }
        }
        else if(i%2 == 0 && S[i] > 0){
            wrong_pos.insert(abs(S[i]));
            positive[abs(S[i])].push_back(i);
        }
        else if(i % 2 != 0 && S[i] > 0){
            if(S[i-1] < 0 && abs(S[i-1]) == S[i]){
            }
            else{
                wrong_pos.insert(abs(S[i]));
                positive[abs(S[i])].push_back(i);
            }
        }
        else if(i % 2 != 0 && S[i] < 0){
            wrong_pos.insert(abs(S[i]));
            negative[abs(S[i])].push_back(i);
        }
    }
    
    
}
int count_swaps(vector<int> S){
    create_adj(S);
    int swaps = 0;
    for(auto err:wrong_pos){
        for(int i = 0; i < positive[err].size(); i ++){
            if(positive[err][i] < negative[err][i]){
                swaps += abs(negative[err][i]-positive[err][i]);
                
            }
            else{
                swaps += abs(negative[err][i]-positive[err][i])-1;
            }
        }
    }
   
    
    return swaps;
}
| # | 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... |