30pts code:
#include <bits/stdc++.h>
#define pb push_back
using namespace std;
typedef long long ll;
const int N = 500001;
int n, a[N], c[N];
ll solve(int l, int r) {
if (l == r)
return 0;
int m = (l + r) / 2, t = 0, p1 = l, p2 = m + 1;
ll cnt = solve(l, m) + solve(m + 1, r);
while (p1 <= m && p2 <= r)
if (a[p1] < a[p2])
c[++t] = a[p1++], cnt += p2 - m - 1;
else
c[++t] = a[p2++];
while (p1 <= m)
c[++t] = a[p1++], cnt += p2 - m - 1;
while (p2 <= r)
c[++t] = a[p2++];
for (int i = 1; i <= t; i++)
a[l + i - 1] = c[i];
return cnt;
}
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; i++)
scanf("%d", &a[i]);
printf("%lld\n", solve(1, n));
}