首先我们很容易想到这题可以用dp来做,
d1[i]表示前i-1个元素中,小于a[i]的元素个数
d2[i]表示前i个元素中三元上升子序列的对数
转移过程非常朴素,见代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn = 1e5+7;
const int INF = 2e9+1;
int d1[maxn],d2[maxn];
int n,a[maxn];
ll ans=0;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",a+i);
for(int i=2;i<=n;i++)
{
for(int j=1;j<i;j++)
{
if(a[j]<a[i]) d1[i]++;
}
}
for(