#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ed "\n"
#define fi first
#define se second
#define db double
#define irs insert
#define pb push_back
#define mpa make_pair
#define pi pair<int,int>
#define MASK(i) (1LL << (i))
#define BIT(x, i) ((x>>i)&1)
#define ON(x, i) ((x) MASK(i))
#define OFF(x, i) ((x) & ~MASK(i))
#define ALL(v) v.begin() , v.end()
#define bp(x) __builtin_popcount(x)
#define pii pair<int,pair<int,int>>
#define fl(i,a,b) for(int i=a;i>=b;--i)
#define fis(i,a,b) for(int i=a;i<=b;++i)
#define Radian(x) (x * acos(-1.0) / 180)
const double eps = 1e-9;
const int mod=1e9+7;
const int Mdem=998244353;
const int LOG=19;
const int base=31;
const int maxn=3e5+5;
const int bl = 320;
#define fast ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define gay(a) freopen(a".inp","r",stdin),freopen(a".out","w",stdout)
template <class T>
bool minimize(T &a, const T &b) {
if(a > b) {a = b; return 1;}
return 0;
}
template <class T>
bool maximize(T &a, const T &b) {
if(a < b) {a = b; return 1;}
return 0;
}
template <class T>
void compress(vector <T> &v) {
sort(ALL(v));
v.erase(unique(ALL(v)), (v).end());
}
void add(int &a, int b) { a += b; if (a >= mod) a -= mod; }
void sub(int &a, int b) { a -= b; if (a < 0) a += mod; }
struct Fenwick{
int n;
vector<int> tree;
Fenwick(int _n = 0){
n = _n;
tree.resize(n + 1);
}
void update(int x, int val){
for(; x <= n; x += x & -x) tree[x] += val;
}
int get(int x){
int res = 0;
for(; x; x -= x & -x) res += tree[x];
return res;
}
int query(int l, int r){
if(l == 0) return get(r);
if(r == 0) return 0;
else return get(r) - get(l - 1);
}
};
vector<int> com;
int get(int x){
return lower_bound(ALL(com), x) - com.begin() + 1;
}
int n;
int a[maxn];
Fenwick f1, f2;
signed main(){
fast;
cin >> n;
fis(i, 1, n) cin >> a[i], com.pb(a[i]);
compress(com);
fis(i, 1, n) a[i] = get(a[i]);
f1 = Fenwick(n); f2 = Fenwick(n);
fis(i, 1, n){
f2.update(a[i], 1);
}
int ans = 0;
fis(i, 1, n){
f2.update(a[i], -1);
ans += f1.get(a[i] - 1) * f2.get(a[i] - 1);
f1.update(a[i], 1);
}
cout << ans << ed;
return 0;
}
| # | 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... |