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
#include
using namespace std; using namespace std; long long my_merge(vector
&v, vector
&tmp, int L, int mid, int R) { int i = L, j = mid; int idx = L; long long inversions = 0; while(i <= mid - 1 and j <= R) { if(v[i] <= v[j]) { tmp[idx++] = v[i++]; } else { tmp[idx++] = v[j++]; inversions += mid - i; } } while(i <= mid - 1) { tmp[idx++] = v[i++]; } while(j <= R) { tmp[idx++] = v[j++]; } for(int id = L; id <= R; id++) { v[id] = tmp[id]; } return inversions; } long long merge_sort(vector
&v, vector
&tmp, int L, int R) { int mid = (L + R) / 2; long long inversions = 0; if(R > L) { inversions += merge_sort(v, tmp, L, mid); inversions += merge_sort(v, tmp, mid + 1, R); inversions += my_merge(v, tmp, L, mid + 1, R); } return inversions; } int main() { int n; cin >> n; vector
v(n); for(int i = 0; i < n; i++) { cin >> v[i]; } vector
tmp(n); cout << merge_sort(v, tmp, 0, n - 1) << endl; return 0; }
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)