#include "shoes.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
long long count_swaps(std::vector<int> s) {
ll ans = 0;
map<int, queue<int>> pos;
int n = s.size();
for (int i = 0; i < n; i++){
pos[s[i]].push(i);
}
vector<bool> used(n, false);
int curr = 0;
for (int i = 0; i < n; i++){
if (used[i]) continue;
pos[s[i]].pop();
used[i] = true;
int j = pos[-s[i]].front();
pos[-s[i]].pop();
used[j] = true;
ans += abs(i - curr) + abs(j - (curr+1));
curr += 2;
if (s[i] > 0) ans += 2;
}
return ans / 2;
}
#ifdef LOCAL
#include <cstdio>
#include <cassert>
int main() {
int n;
assert(1 == scanf("%d", &n));
vector<int> S(2 * n);
for (int i = 0; i < 2 * n; i++)
assert(1 == scanf("%d", &S[i]));
fclose(stdin);
long long result = count_swaps(S);
printf("%lld\n", result);
fclose(stdout);
return 0;
}
#endif
# | 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... |