#include <bits/stdc++.h>
#include "shoes.h"
using namespace std;
using ll = long long;
#define debug(v) \
cerr << "Line(" << __LINE__ << ") -> " << #v << " = " ;
#define dbx(x) debug(x); cerr << x << "\n";
#define dbg(x) debug(x); cerr << "{ "; for(auto &e : x) cerr << e << ", "; cerr << "} \n";
#define log(x) (31^__builtin_clz(x))
const int N = 1e6+10, MOD = 1e9+7;
ll count_swaps(vector<int> S){
int n = (int)S.size();
vector<int> a = S;
set<pair<int,int>> l, r, all;
for(int i = 0 ; i < n ; i ++){
if(a[i] < 0)l.insert({a[i], i});
else r.insert({a[i], i});
}
ll ans = 0;
for(int i = 0 ; i < n ; i ++){
if(all.find(make_pair(a[i], i)) != all.end())continue;
if(a[i] < 0){
auto it = r.lower_bound(make_pair(-a[i], 0));
ans += it->second - i - 1;
all.insert({a[i], i});
all.insert({-a[i], it->second});
l.erase(make_pair(a[i], i));
r.erase(it);
}else {
auto it = l.lower_bound(make_pair(-a[i], 0));
ans += it->second - i;
all.insert({a[i], i});
all.insert({-a[i], it->second});
l.erase(it);
r.erase(make_pair(a[i], i));
}
}
return ans;
}
/*
*/
# | 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... |