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 "grader.cpp"
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
#define order_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update>
long long count_swaps(std::vector<int> a) {
int n = a.size()/2;
int la[n*2]{};
int b[n+1]{};
for(int i = n*2-1; i >= 0; i--){
if(b[abs(a[i])] == 0)b[abs(a[i])] = i;
else{
la[i] = b[abs(a[i])];
b[abs(a[i])] = 0;
}
}
order_set st;
int ans = 0, us[n*2]{};
for(int i = 0; i < n*2; i++){
if(us[i]){
st.erase(i);
continue;
}
int r = st.order_of_key(la[i]);
ans += la[i]-i-1-r;
st.insert(la[i]);
us[la[i]]++;
}
int us2[n*2]{};
for(int i = 0; i < n*2; i++){
if(us2[i])continue;
us2[la[i]]++;
ans += (a[i] > 0);
}
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... |