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分
1 人评分
2006年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:913 |
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:687 |
WU-复数求和 (C++代码)浏览:2119 |
WU-字符串比较 (C++代码)浏览:824 |
WU-陶陶摘苹果2 (C++代码)浏览:1018 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:590 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:729 |
IP判断 (C语言代码)浏览:592 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:985 |
幸运数 (C++代码)浏览:2983 |