#include <bits/stdc++.h>
#include "shoes.h"
// #include "grader.cpp"
using namespace std;
typedef long long ll;
const int N = 2e5 + 10;
int fen[N];
void add(int p){
for (int i = p + 1; i < N; i += i & -i)
fen[i] += 1;
}
int get(int p){
int res = 0;
for (int i = p + 1; i > 0; i -= i & -i)
res += fen[i];
return res;
}
ll count_swaps(vector<int> s) {
int n = s.size();
map<int, queue<int>> inds;
for (int i = 0; i < n; i ++)
inds[s[i]].push(i);
bool mark[n] = {};
ll ans = 0;
for (int cur = 0; cur < n; cur ++){
if (mark[cur]) continue;
int val = s[cur];
int ind = inds[-val].front();
inds[-val].pop();
int del = get(ind) - get(cur);
ans += ind - cur - 1 - del + (s[cur] > 0);
mark[ind] = 1;
add(ind);
}
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... |