#include <bits/stdc++.h>
#include "shoes.h"
using namespace std;
#define ll long long
#define rep(i,a,b) for(int i = a; i <= b; i++)
int bit[200010],n;
int query(int i) {
int ans = 0;
for(;i>0; i-=(-i&i)) ans += bit[i];
return ans;
}
void update(int i, int x) {
if(i==0) return;
for (; i<=n; i+=(-i&i)) bit[i] += x;
}
ll count_swaps(vector<int> s) {
n = s.size();
vector<deque<int>> pos(s.size()+1);
vector<bool> mk(s.size());
rep(i,0,n-1) {
update(i+1,1);
pos[s[i]+n/2].push_back(i);
}
ll ans = 0;
rep(i,0,n-1) {
if(mk[i]) continue;
int j = pos[-s[i]+n/2].front();
ans += query(j+1)-1;
if(s[i] < 0) ans--;
mk[j] = 1;
update(i+1,-1);
update(j+1,-1);
pos[-s[i]+n/2].pop_front();
pos[s[i]+n/2].pop_front();
}
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... |