#include "shoes.h"
#include <bits/stdc++.h>
using namespace std; using ll = long long;
const int N = 1e5 + 3;
set<ll> trunk[N+N];
auto *pos = trunk+N;
struct BIT {
ll t[2*N+2];
void add(int k, ll x) {
for(++k; k<=2*N; k+=k&-k) t[k]+=x;
}
ll sum(int l, int r) {
ll res=0;
for(; l; l-=l&-l) res-=t[l];
for(++r; r; r-=r&-r) res+=t[r];
return res;
}
} ds;
ll count_swaps(vector<int> s) {
ll n = size(s)/2, cnt=0;
for(int i=0; i<2*n; ++i) {
pos[s[i]].insert(i);
ds.add(i, +1);
}
for(int i=0; i<2*n; ++i) if(pos[s[i]].contains(i)) {
pos[s[i]].erase(i);
ll j=*pos[-s[i]].begin(); pos[-s[i]].erase(j);
cnt += ds.sum(i+1, j-1) + (s[i]>0);
ds.add(i, -1), ds.add(j, -1);
}
return cnt;
}
# | 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... |