import java.math.BigInteger;
import java.util.*;
public class Main{
static int n=100010;
static int maxh=1000010;
static long[] total=new long[n];
static long ans;
static int[] hight=new int[n];
static int[] c1=new int[maxh];
static int[] c2=new int[maxh];
static int[] reverseOrder=new int[n];
public static void main(String[] args) {
create();
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
for (int i=1;i<=n;i++)
{
hight[i]=sc.nextInt();
add(hight[i]+1,1,c1);
reverseOrder[i]=i-sum(hight[i]+1,c1);
}
for (int i=n;i>0;i--)
{
add(hight[i]+1,1,c2);
reverseOrder[i]+=sum(hight[i],c2);
}
ans=0;
for (int i=1;i<=n;i++) {
ans+=total[reverseOrder[i]];
}
System.out.println(ans);
}
public static int lowbit(int x)
{
return (x&(-x));
}
//打表
public static void create()
{
total[0]=0;;
for (int i=1;i<n;i++)
{
total[i]=total[i-1]+i;
}
}
//单点更新
public static void add(int pos,int num,int[] c)
{
while (pos<maxh)
{
c[pos]+=num;
pos+=lowbit(pos);
}
}
//求前pos位和
public static int sum(int pos,int[] c)
{
int sum=0;
while (pos>0)
{
sum+=c[pos];
pos-=lowbit(pos);
}
return sum;
}
}
P8613 [蓝桥杯 2014 省 B] 小朋友排队
最新推荐文章于 2024-07-29 14:22:26 发布