记录编号 601362 评测结果 AAAAAAAAAA
题目名称 1975.奶牛排序 最终得分 100
用户昵称 Gravatar对立猫猫对立 是否通过 通过
代码语言 C++ 运行时间 0.179 s
提交时间 2025-06-16 21:08:13 内存使用 5.77 MiB
显示代码纯文本
#include <bits/stdc++.h>
#define int long long
using namespace std;
#define lowbit(x) (x & -x)
const int MAXN = 1e5 + 10;
int n;
int maxx = -1;
int ans;
int a[MAXN], l[MAXN], r[MAXN];
int tree[MAXN];
void add(int x, int y) {
	for (; x <= maxx; x += lowbit(x)) tree[x] += y;
}
int ask(int x) {
	int res = 0;
	for (; x; x -= lowbit(x)) res += tree[x];
	return res;
}
signed main() {
	freopen("cow.in", "r", stdin);
	freopen("cow.out", "w", stdout);
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	cin >> n;
	for (int i = 1; i <= n; ++i) {
		cin >> a[i];
		maxx = max(maxx, a[i]);
	}
	for (int i = 1; i <= n; ++i) {
		l[i] = ask(maxx) - ask(a[i]);
		add(a[i], 1);
	}
	memset(tree, 0, sizeof(tree));
	for (int i = n; i >= 1; --i) {
		r[i] = ask(a[i] - 1);
		add(a[i], 1);
	}
	for (int i = 1; i <= n; ++i) {
		ans += (l[i] + r[i]) * a[i];
	}
	cout << ans << endl;
	return 0;
}