#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int n;
int a[100005];
// ketika masuk ke function merge
// bagian kiri sudah sorted
// bagian kanan sudah sorted
ll merge(ll l, ll m, ll r) {
// menghitung panjang dari subarray kiri dan kanan
int n1 = m - l + 1, n2 = r - m;
// untuk mengambil nilai subarray kiri dan kanan
int left[n1], right[n2];
for (int i = 0; i < n1; i++) {
left[i] = a[i + l];
}
for (int i = 0; i < n2; i++) {
right[i] = a[m + 1 + i];
}
ll res = 0;
int i = 0, j = 0, k = l;
while (i < n1 && j < n2) {
// menaruh nilai yang paling kecil antara 2 bilangan yang ditunjuk ke dalam array
if (left[i] <= right[j]) {
a[k] = left[i];
k++, i++;
} else {
a[k] = right[j];
k++, j++;
res += n1 - i;
}
}
// menaruh sisa array di subkiri/kanan ke dalam array asli
while (i < n1) {
a[k++] = left[i++];
k++, i++;
}
while (j < n2) {
a[k] = right[j];
k++, j++;
}
return res;
}
ll dnc(int l, int r) {
ll res = 0;
if (l < r) {
int m = (l + r) / 2;
res += dnc(l, m);
res += dnc(m + 1, r);
res += merge(l, m, r);
}
return res;
}
int main() {
cin.tie(0) -> sync_with_stdio(false), cout.tie(0);
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
ll ans = dnc(0, n - 1);
cout << ans << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbjsKaW50IGFbMTAwMDA1XTsKCi8vIGtldGlrYSBtYXN1ayBrZSBmdW5jdGlvbiBtZXJnZQovLyBiYWdpYW4ga2lyaSBzdWRhaCBzb3J0ZWQKLy8gYmFnaWFuIGthbmFuIHN1ZGFoIHNvcnRlZApsbCBtZXJnZShsbCBsLCBsbCBtLCBsbCByKSB7CiAgICAvLyBtZW5naGl0dW5nIHBhbmphbmcgZGFyaSBzdWJhcnJheSBraXJpIGRhbiBrYW5hbgogICAgaW50IG4xID0gbSAtIGwgKyAxLCBuMiA9IHIgLSBtOyAKCiAgICAvLyB1bnR1ayBtZW5nYW1iaWwgbmlsYWkgc3ViYXJyYXkga2lyaSBkYW4ga2FuYW4KICAgIGludCBsZWZ0W24xXSwgcmlnaHRbbjJdOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuMTsgaSsrKSB7CiAgICAgICAgbGVmdFtpXSA9IGFbaSArIGxdOwogICAgfQogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuMjsgaSsrKSB7CiAgICAgICAgcmlnaHRbaV0gPSBhW20gKyAxICsgaV07CiAgICB9CgogICAgbGwgcmVzID0gMDsKICAgIGludCBpID0gMCwgaiA9IDAsIGsgPSBsOwogICAgd2hpbGUgKGkgPCBuMSAmJiBqIDwgbjIpIHsKICAgICAgICAvLyBtZW5hcnVoIG5pbGFpIHlhbmcgcGFsaW5nIGtlY2lsIGFudGFyYSAyIGJpbGFuZ2FuIHlhbmcgZGl0dW5qdWsga2UgZGFsYW0gYXJyYXkKICAgICAgICBpZiAobGVmdFtpXSA8PSByaWdodFtqXSkgewogICAgICAgICAgICBhW2tdID0gbGVmdFtpXTsKICAgICAgICAgICAgaysrLCBpKys7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYVtrXSA9IHJpZ2h0W2pdOwogICAgICAgICAgICBrKyssIGorKzsKICAgICAgICAgICAgcmVzICs9IG4xIC0gaTsKICAgICAgICB9CiAgICB9CiAgICAvLyBtZW5hcnVoIHNpc2EgYXJyYXkgZGkgc3Via2lyaS9rYW5hbiBrZSBkYWxhbSBhcnJheSBhc2xpCiAgICB3aGlsZSAoaSA8IG4xKSB7CiAgICAgICAgYVtrKytdID0gbGVmdFtpKytdOwogICAgICAgIGsrKywgaSsrOwogICAgfQogICAgd2hpbGUgKGogPCBuMikgewogICAgICAgIGFba10gPSByaWdodFtqXTsKICAgICAgICBrKyssIGorKzsKICAgIH0KICAgIHJldHVybiByZXM7Cn0KCmxsIGRuYyhpbnQgbCwgaW50IHIpIHsKICAgIGxsIHJlcyA9IDA7CiAgICBpZiAobCA8IHIpIHsKICAgICAgICBpbnQgbSA9IChsICsgcikgLyAyOwogICAgICAgIHJlcyArPSBkbmMobCwgbSk7CiAgICAgICAgcmVzICs9IGRuYyhtICsgMSwgcik7CiAgICAgICAgcmVzICs9IG1lcmdlKGwsIG0sIHIpOwogICAgfQogICAgcmV0dXJuIHJlczsKfQoKaW50IG1haW4oKSB7CiAgICBjaW4udGllKDApIC0+IHN5bmNfd2l0aF9zdGRpbyhmYWxzZSksIGNvdXQudGllKDApOwogICAgY2luID4+IG47CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGNpbiA+PiBhW2ldOwogICAgfQogICAgbGwgYW5zID0gZG5jKDAsIG4gLSAxKTsKICAgIGNvdXQgPDwgYW5zIDw8ICdcbic7CiAgICByZXR1cm4gMDsKfQ==