#include <vector>
#include <bits/stdc++.h>
long long count_swaps(std::vector<int> S){
int n = S.size();
std::vector<std::vector<int>> ind(n + 1);
long long ans = 0;
for (int i = 0; i < n; ++i){
int u = S[i];
if (ind[abs(u)].size() == 0){
ind[abs(u)].push_back(i);
continue;
}
int v = ind[abs(u)].back();
v = S[v];
if (std::signbit(v) != std::signbit(u)){
ans += i - ind[abs(u)].back() - 1;
if (v > 0 && u < 0) ans++;
ind[abs(u)].pop_back();
}
}
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... |