#include <bits/stdc++.h>
#define MAXN 524080
using namespace std;
int n, tar;
unsigned long long sum = 0;
int ranking[MAXN+1];
pair<int, int> a[MAXN+1];
int cnt[MAXN*4+1], l[MAXN*4+1], r[MAXN*4+1];
void init(int k, int lp, int rp) {
l[k] = lp;
r[k] = rp;
if(lp < rp) {
int mid = (lp+rp)/2;
init(k*2, lp, mid);
init(k*2+1, mid+1, rp);
}
}
int query(int k) { // return the cnt of bucket(tar, maxa]
if(r[k] <= tar) {
return 0;
}
if(l[k] > tar) {
return cnt[k];
}
return query(k*2)+query(k*2+1);
}
void update(int k) {
if(l[k] > tar || r[k] < tar) {
return;
}
cnt[k]++;
update(k*2);
update(k*2+1);
}
int main() {
ios::sync_with_stdio(false);
cin >> n;
for(int i = 1; i <= n; i++) {
cin >> a[i].first;
a[i].second = i;
}
sort(a+1, a+n+1);
for(int i = 1, j = 0; i <= n; i++) {
if(a[i].first != a[i-1].first) {
j++;
}
ranking[a[i].second] = j;
}
init(1, 1, n);
for(int i = 1; i <= n; i++) {
tar = ranking[i];
sum += query(1);
update(1);
}
cout << sum << endl;
return 0;
}
但凡改成#define MAXN 524079就会re 50pts