#include "shoes.h"
#include <bits/stdc++.h>
using namespace std;
#define sig signed
#define int long long
#define arr array
#define vec vector
#define pii pair<int, int>
#define fir first
#define sec second
const int N = 2e5 + 5;
int n;
arr<int, N> a;
arr<int, N> prm;
void prm_cmp() {
map<int, vec<int>> ng, ps;
for (int i = 1; i <= n; i++) {
if (a[i] < 0) ng[-a[i]].push_back(i);
else ps[a[i]].push_back(i);
}
vec<pii> ord;
for (pair<int, vec<int>> x : ng)
for (int i = 0; i < x.sec.size(); i++)
ord.push_back({x.sec[i], ps[x.fir][i]});
auto cmp = [](pii x, pii y) {
return min(x.fir, x.sec) < min(y.fir, y.sec);
};
sort(ord.begin(), ord.end(), cmp);
for (int i = 0; i < ord.size(); i++)
prm[ord[i].fir] = 2 * i + 1, prm[ord[i].sec] = 2 * i + 2;
}
int ans_cmp() {
int ans = 0;
for (int i = 1; i <= n; i++)
for (int j = i + 1; j <= n; j++)
ans += (prm[i] > prm[j]);
return ans;
}
int count_swaps(vec<sig> _a) {
n = _a.size();
for (int i = 1; i <= n; i++) a[i] = _a[i - 1];
prm_cmp();
int ans = ans_cmp();
// for (int i = 1; i <= n; i++) cout << i << ": " << prm[i] << '\n';
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... |