#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=1e5+2;
set<int>ps[N],ng[N];
int b[N<<1];
void reset(int32_t n){
for(int i=0;i<=n;++i){
if(i<N)ps[i].clear();
if(i<N)ng[i].clear();
b[i]=0;
}
}
ll count_swaps(vector<int>a){
int n=a.size();
reset(n);
for(int i=0;i<n;++i){
if(a[i]>0)ps[a[i]].insert(i);
else ng[-a[i]].insert(i);
}
ll ans=0;
for(int i=0,j;i<n;++i){
if(b[i])continue;
if(a[i]>0){
j=*ng[a[i]].begin();
ng[a[i]].erase(ng[a[i]].begin());
ps[a[i]].erase(ps[a[i]].find(i));
ans+=j-i;
}
if(a[i]<0){
j=*ps[-a[i]].begin();
ps[-a[i]].erase(ps[-a[i]].begin());
ng[-a[i]].erase(ng[-a[i]].find(i));
ans+=j-i-1;
}
b[i]=b[j]=1;
}
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... |