#include using namespace std; #define fastIO ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); static const int SIZE = 2000000 + 7; void input(int* arr, int &n) { cin >> n; for (int i = 0; i < n; i++) { cin >> arr[i]; } } long long merge(int* arr, int* left, int* right, int n) { int i = 0; int j = 0; long long res = 0; int index = 0; while (i < n / 2 && j < n / 2 + n % 2) { if (left[i] <= right[j]) { arr[index++] = left[i++]; } else { res += n / 2 - i; arr[index++] = right[j++]; } } while (i < n / 2) { arr[index++] = left[i++]; } while (j < n / 2 + n % 2) { arr[index++] = right[j++]; } delete[] left; delete[] right; return res; } long long countInversions(int* arr, int n) { if (n <= 1) return 0; int* left = new int[n / 2]; int* right = new int[n / 2 + n % 2]; for (int i = 0; i < n / 2; i++) { left[i] = arr[i]; } for (int i = 0; i < n / 2 + n % 2; i++) { right[i] = arr[n / 2 + i]; } long long leftRes = countInversions(left, n / 2); long long rightRes = countInversions(right, n / 2 + n % 2); return leftRes + rightRes + merge(arr, left, right, n); } int n; int arr[SIZE]; int main() { fastIO input(arr, n); cout << countInversions(arr, n) << endl; return 0; }