#ifndef ONLINE_JUDGE #define _GLIBCXX_DEBUG #endif #define _USE_MATH_DEFINES #include using namespace std; using ll = long long; //https://boostjp.github.io/tips/multiprec-int.html #define YES cout<<"Yes\n" #define NO cout<<"No\n" #define YN {cout<<"Yes\n";}else{cout<<"No\n";}// if(a==b)YN; #define NO2 cout<<"-1\n" #define rep(i, n) for (int i = 0; i < (int)(n); ++i) #define rrep(i, n) for (int i=int(n)-1; i>=0; --i) #define all(a) a.begin(),a.end() #define rall(a) a.rbegin(),a.rend() template struct fenwick_tree { using U = T; public: fenwick_tree() : _n(0) {} fenwick_tree(int n) : _n(n), data(n) {} void add(int p, T x) { assert(0 <= p && p < _n); p++; while (p <= _n) { data[p - 1] += U(x); p += p & -p; } } T sum(int l, int r) { assert(0 <= l && l <= r && r <= _n); return sum(r) - sum(l); } private: int _n; std::vector data; U sum(int r) { U s = 0; while (r > 0) { s += data[r - 1]; r -= r & -r; } return s; } }; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N; cin >> N; vector A(N); rep(i,N) cin >> A[i]; vector A_sort = A; sort(all(A_sort)); A_sort.erase(unique(all(A_sort)), A_sort.end()); vector POS(N); rep(i,N) { POS[i] = lower_bound(all(A_sort), A[i]) - A_sort.begin(); } ll ans = 0; fenwick_tree BIT(N+1); for (int i=0; i