Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
#include
#include
#include
#include
#include
#include "shoes.h" using namespace std; typedef long long ll; const int maxn = 2e5 + 10; ll segment_tree[3 * maxn]; void build_tree(int L, int R, int position) { if(L == R) { segment_tree[position] = 0; } else { int middle = (L + R) / 2; build_tree(L, middle, 2 * position); build_tree(middle + 1, R, 2 * position + 1); segment_tree[position] = segment_tree[2 * position] + segment_tree[2 * position + 1]; } } // L R i L R j L R ll query(int L, int R, int position, int i, int j) { if(i <= L and R <= j) { return segment_tree[position]; } if(R < i or j < L) { return 0; } int middle = (L + R) / 2; return query(L, middle, 2 * position, i, j) + query(middle + 1, R, 2 * position + 1, i, j); } void update(int L, int R, int position, int idx, ll new_val) { if(L == R) { segment_tree[position] += new_val; return; } int middle = (L + R) / 2; if(idx <= middle) { update(L, middle, 2 * position, idx, new_val); } else { update(middle + 1, R, 2 * position + 1, idx, new_val); } segment_tree[position] = segment_tree[2 * position] + segment_tree[2 * position + 1]; } ll count_swaps(vector
v) { map
> m; vector
S; int cnt = 0; for(int i = 0; i < v.size(); i++) { if(!m[v[i]].empty()) { S.push_back(m[v[i]].front()); m[v[i]].pop(); } else { int r = 0; if(v[i] > 0) { r = 1; } S.push_back(2 * cnt + r); m[-v[i]].push(2 * cnt + (1 - r)); cnt++; } } build_tree(0, (int) v.size() + 1, 1); ll res = 0; for(int i = 0; i < (int) S.size(); i++) { update(0, (int) v.size() + 1, 1, S[i], 1); res += query(0, (int) v.size() + 1, 1, S[i] + 1, v.size()); } return res; }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)