#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 333333;
int n, a[N], lf[N], rf[N], bit[N];
map<int, int> mp;
void clear(){
memset(bit, 0, sizeof bit);
}
int qry(int idx){
int res = 0;
for(;idx>0;idx-=idx & -idx) res += bit[idx];
return res;
}
void upd(int idx, int x){
for(;idx<=n;idx+=idx & -idx) bit[idx] += x;
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> n;
for(int i = 1;i<=n;i++){
cin >> a[i];
mp[a[i]];
}
int cc = 0;
for(auto &[x, y] : mp){
y = ++cc;
}
memset(bit, 0, sizeof bit);
for(int i = 1;i<=n;i++){
a[i] = mp[a[i]];
lf[i] = qry(a[i] - 1);
upd(a[i], 1);
}
memset(bit, 0, sizeof bit);
for(int i = n;i>=1;i--){
rf[i] = qry(a[i] - 1);
upd(a[i], 1);
}
int ans = 0;
for(int i = 2;i<n;i++) ans += lf[i] * rf[i];
cout << ans;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |