def add(d, i, x, maxh):
    while i <= maxh + 1:
        d[i] += x
        i += i & -i

def _sum(d, i):
    res = 0
    while i > 0:
        res += d[i]
        i -= i & -i
    return res

n = int(input())
a = list(map(int, input().split()))
d = [0] * 1000005
lr = [0] * 100005
maxh = 0

for i in range(n):
    a[i] += 1
    maxh = max(maxh, a[i])

for i in range(n):
    add(d, a[i], 1, maxh)
    lr[i] += i + 1 - _sum(d, a[i])

d = [0] * (maxh + 5)

for i in range(n - 1, -1, -1):
    add(d, a[i], 1, maxh)
    lr[i] += _sum(d, a[i] - 1)

ans = 0
for i in range(n):
    k = lr[i]
    ans += k * (k + 1) // 2  # 使用 // 进行整数除法,得到整数结果

print(ans)


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论