This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "shoes.h"
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e5+5;
int n;
ll f[N],ans;
map<int,queue<int>> mp;
void add(int i,int v){
while(i<N){
f[i]+=v;
i+=i&-i;
}
}
ll read(int i){
ll ret=0;
while(i>0){
ret+=f[i];
i-=i&-i;
}
return ret;
}
ll count_swaps(std::vector<int> s) {
n=s.size();
for(int i=1;i<=n;++i)add(i,1);
for(int i=1;i<=n;++i){
int a=s[i-1];
if(!mp[-a].empty()){
ll tmp=read(i)-read(mp[-a].front()-(0?1:a<0))-1;
ans+=tmp;
//printf("move %d from %d to %d, used %d\n",a,i,mp[-a].front(),tmp);
add(i,-1);
add(mp[-a].front(),1);
mp[-a].pop();
}else{
//printf("add %d at %d\n",a,i);
mp[a].emplace(i);
}
}
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... |