#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
using pii = pair<int,int>;
#define int long long
typedef tree
<pii, null_type, less<pii>, rb_tree_tag, tree_order_statistics_node_update> indexed_set;
const int oo = 1e18;
const int MAXN = 1e5 + 7;
void _()
{
int n;
cin >> n;
vector<int>v(n);
for(int &i : v) cin >> i;
vector<int>l(n), r(n);
indexed_set leftset;
indexed_set rightset;
for(int i = 0; i < n; i++)
{
l[i] = leftset.order_of_key(make_pair(v[i], -1));
leftset.insert(make_pair(v[i], i));
}
for(int i = n - 1; i >= 0; i--)
{
r[i] = rightset.order_of_key(make_pair(v[i], -1));
rightset.insert(make_pair(v[i], i));
}
int sum = 0;
for(int i = 0; i < n; i++)
{
sum += (1LL * l[i] * r[i]);
}
cout << sum << endl;
}
signed main()
{
int tt = 1;
// cin >> tt;
while(tt--) _();
}
# | 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... |