/*
Cred : SunnyYeahBoi
It's my last chance (⌐■_■)
Problem :
*/
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define double long double
#define endl "\n"
#define NAME "a"
const int MAXN = 1e6 + 5;
const int inf = 1e18;
const int MOD = 1e9 + 7;
void FileInput(){
if(fopen(NAME".inp" , "r") == NULL)
freopen(NAME".inp" , "w" , stdout);
freopen(NAME".inp" , "r" , stdin);
freopen(NAME".out" , "w" , stdout);
}
int n;
int a[MAXN];
int cnt[MAXN];
struct Segtree{
vector<int> tree;
int n;
void init(int x){
n = x + 1;
tree.resize(4 * n + 1 , 0);
}
void update(int vt , int l , int r , int x){
if(l == r){
tree[vt]++;
return;
}
int mid = (l + r) / 2;
if(x <= mid)
update(vt * 2 , l , mid , x);
else update(vt * 2 + 1 , mid + 1 , r , x);
tree[vt] = tree[vt * 2] + tree[vt * 2 + 1];
}
void update(int x){
update(1 , 1 , n , x);
}
int get(int vt , int l , int r , int u , int v){
if(u <= l && r <= v)
return tree[vt];
if(l > v || r < u)
return 0;
int mid = (l + r) / 2;
return get(vt * 2 , l , mid , u , v) + get(vt * 2 + 1 , mid + 1 , r , u , v);
}
int get(int l , int r){
return get( 1 , 1 , n , l , r);
}
} ST;
void solve(){
cin >> n;
for(int i = 1 ; i <= n ; i++)
cin >> a[i];
map<int , int> mp;
for(int i = 1 ; i <= n ; i ++)
mp[a[i]]++;
mp[-inf];
vector<int> nums;
for(auto x : mp)
nums.push_back(x.first);
// for(auto x : nums)
// cout << x << endl;
ST.init(n);
int res = 0;
for(int i = 1 ; i <= n ; i++){
int id = lower_bound(nums.begin() , nums.end() , a[i]) - nums.begin();
// cout << i << " " << id << " " << ST.get(1 , id - 1)<< endl;
res += ST.get(id + 1 , (int)nums.size() - 1);
ST.update(id);
/*
truy vấn:
lấy tổng 0 -> x - 1
cập nhật a[x] += 1
=> Segtree
*/
}
cout << res << endl;
}
int32_t main(){
//FileInput();
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int t = 1;
// cin >> t;
while(t--)
solve();
return 0;
}
LyoKICAgIENyZWQgOiBTdW5ueVllYWhCb2kKICAgIEl0J3MgbXkgbGFzdCBjaGFuY2UgKOKMkOKWoF/ilqApCiAgICBQcm9ibGVtIDoKKi8KCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgZG91YmxlIGxvbmcgZG91YmxlCiNkZWZpbmUgZW5kbCAiXG4iCiNkZWZpbmUgTkFNRSAiYSIKCmNvbnN0IGludCBNQVhOID0gMWU2ICsgNTsKY29uc3QgaW50IGluZiA9IDFlMTg7CmNvbnN0IGludCBNT0QgPSAxZTkgKyA3OwoKdm9pZCBGaWxlSW5wdXQoKXsKICAgIGlmKGZvcGVuKE5BTUUiLmlucCIgLCAiciIpID09IE5VTEwpCiAgICAgICAgZnJlb3BlbihOQU1FIi5pbnAiICwgInciICwgc3Rkb3V0KTsKICAgIGZyZW9wZW4oTkFNRSIuaW5wIiAsICJyIiAsIHN0ZGluKTsKICAgIGZyZW9wZW4oTkFNRSIub3V0IiAsICJ3IiAsIHN0ZG91dCk7Cn0KCmludCBuOwppbnQgYVtNQVhOXTsKaW50IGNudFtNQVhOXTsKCnN0cnVjdCBTZWd0cmVlewogICAgdmVjdG9yPGludD4gdHJlZTsKICAgIGludCBuOwoKICAgIHZvaWQgaW5pdChpbnQgeCl7CiAgICAgICAgbiA9IHggKyAxOwogICAgICAgIHRyZWUucmVzaXplKDQgKiBuICsgMSAsIDApOwogICAgfQoKICAgIHZvaWQgdXBkYXRlKGludCB2dCAsIGludCBsICwgaW50IHIgLCBpbnQgeCl7CiAgICAgICAgaWYobCA9PSByKXsKICAgICAgICAgICAgdHJlZVt2dF0rKzsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpbnQgbWlkID0gKGwgKyByKSAvIDI7CgogICAgICAgIGlmKHggPD0gbWlkKQogICAgICAgICAgICB1cGRhdGUodnQgKiAyICwgbCAsIG1pZCAsIHgpOwogICAgICAgIGVsc2UgdXBkYXRlKHZ0ICogMiArIDEgLCBtaWQgKyAxICwgciAsIHgpOwoKICAgICAgICB0cmVlW3Z0XSA9IHRyZWVbdnQgKiAyXSArIHRyZWVbdnQgKiAyICsgMV07CiAgICB9CgogICAgdm9pZCB1cGRhdGUoaW50IHgpewogICAgICAgIHVwZGF0ZSgxICwgMSAsIG4gLCB4KTsKICAgIH0KCiAgICBpbnQgZ2V0KGludCB2dCAsIGludCBsICwgaW50IHIgLCBpbnQgdSAsIGludCB2KXsKICAgICAgICBpZih1IDw9IGwgJiYgciA8PSB2KQogICAgICAgICAgICByZXR1cm4gdHJlZVt2dF07CgogICAgICAgIGlmKGwgPiB2IHx8IHIgPCB1KQogICAgICAgICAgICByZXR1cm4gMDsKCiAgICAgICAgaW50IG1pZCA9IChsICsgcikgLyAyOwogICAgICAgIHJldHVybiBnZXQodnQgKiAyICwgbCAsIG1pZCAsIHUgLCB2KSArIGdldCh2dCAqIDIgKyAxICwgbWlkICsgMSAsIHIgLCB1ICwgdik7CiAgICB9CgogICAgaW50IGdldChpbnQgbCAsIGludCByKXsKICAgICAgICByZXR1cm4gZ2V0KCAxICwgMSAsIG4gLCBsICwgcik7CiAgICB9Cn0gU1Q7Cgp2b2lkIHNvbHZlKCl7CiAgICBjaW4gPj4gbjsKICAgIGZvcihpbnQgaSA9IDEgOyBpIDw9IG4gOyBpKyspCiAgICAgICAgY2luID4+IGFbaV07CgogICAgbWFwPGludCAsIGludD4gbXA7CiAgICBmb3IoaW50IGkgPSAxIDsgaSA8PSBuIDsgaSArKykKICAgICAgICBtcFthW2ldXSsrOwogICAgbXBbLWluZl07CiAgICAKICAgIHZlY3RvcjxpbnQ+IG51bXM7CiAgICBmb3IoYXV0byB4IDogbXApCiAgICAgICAgbnVtcy5wdXNoX2JhY2soeC5maXJzdCk7CgogICAgLy8gZm9yKGF1dG8geCA6IG51bXMpCiAgICAvLyAgICAgY291dCA8PCB4IDw8IGVuZGw7CgogICAgU1QuaW5pdChuKTsKCiAgICBpbnQgcmVzID0gMDsKICAgIGZvcihpbnQgaSA9IDEgOyBpIDw9IG4gOyBpKyspewogICAgICAgIGludCBpZCA9IGxvd2VyX2JvdW5kKG51bXMuYmVnaW4oKSAsIG51bXMuZW5kKCkgLCBhW2ldKSAtIG51bXMuYmVnaW4oKTsKICAgICAgICAvLyBjb3V0IDw8IGkgPDwgIiAiIDw8IGlkIDw8ICIgIiA8PCBTVC5nZXQoMSAsIGlkIC0gMSk8PCBlbmRsOwogICAgICAgIHJlcyArPSBTVC5nZXQoaWQgKyAxICwgKGludCludW1zLnNpemUoKSAtIDEpOwogICAgICAgIFNULnVwZGF0ZShpZCk7CiAgICAgICAgCiAgICAgICAgLyoKICAgICAgICAgICAgdHJ1eSB24bqlbjoKICAgICAgICAgICAgICAgIGzhuqV5IHThu5VuZyAwIC0+IHggLSAxCiAgICAgICAgICAgICAgICBj4bqtcCBuaOG6rXQgYVt4XSArPSAxCgogICAgICAgICAgICA9PiBTZWd0cmVlCiAgICAgICAgKi8KICAgIH0KICAgIGNvdXQgPDwgcmVzIDw8IGVuZGw7Cn0KCmludDMyX3QgbWFpbigpewogICAgLy9GaWxlSW5wdXQoKTsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKICAgIGludCB0ID0gMTsKICAgIC8vIGNpbiA+PiB0OwogICAgd2hpbGUodC0tKQogICAgICAgIHNvbHZlKCk7CiAgICByZXR1cm4gMDsKfQ==