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>
using namespace std;
#define ll long long int
const int N = 2e5 + 5;
int n, fenwick[N];
queue<int> vall[N], valr[N]; // keep track of left and right shoe
void upd(int i, int val){
for(int j = i; j <= n; j += j & (-j)) fenwick[j] += val;
}
int get(int i){
int val = 0;
for(int j = i; j <= n; j = j & (-j)) val += fenwick[i];
return val;
}
ll count_swaps(vector<int> s){
n = s.size();
int ans = 0;
for(int i = 1; i <= n; i++){
int temp = s[i - 1];
if(temp < 0){
temp *= -1;
if(valr[temp].size()){
int other = valr[temp].front(); valr[temp].pop(); ans += get(i) - get(other - 1); upd(other, 1);
}else{
vall[temp].push(i); upd(i,+1);
}
}else{
if(vall[temp].size()){
int other = vall[temp].front(); vall[temp].pop(); ans += get(i) - get(other); upd(other, 1);
}else{
vall[temp].push(i); upd(i,+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... |