#include "shoes.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll count_swaps( vector<int> v ) {
int n = v.size();
queue<int> fila[2*(n + 1)];
int cont = 1;
ll resp = 0;
vector<int> pos(n);
for( int i = 0; i < n; i++ ){
int t = (( v[i] > 0 ) ? 1 : 0 );
if( fila[2*abs(v[i]) + 1 - t ].empty() ){
pos[i] = cont;
cont += 2;
fila[2*abs(v[i]) + t].push(i);
if( t == 1 ) resp++;
}
else{
int outro = fila[2*abs(v[i]) + 1 - t].front();
fila[2*abs(v[i]) + 1 - t].pop();
pos[i] = pos[outro] + 1;
}
}
vector<ll> bit(n + 1);
auto update = [&]( int id, int val ){
for( int i = id; i < bit.size(); i += i&-i ) bit[i] += val;
};
auto query = [&]( int id ){
int sum = 0;
for( int i = id; i > 0; i -= i&-i ) sum += bit[i];
return sum;
};
for( int i = 0; i < n; i++ ){
resp += i - query(pos[i]);
update(pos[i], 1);
}
return resp;
}
# | 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... |