记录编号 601359 评测结果 AAAAAAAAAA
题目名称 1975.奶牛排序 最终得分 100
用户昵称 Gravatarxxz 是否通过 通过
代码语言 C++ 运行时间 0.322 s
提交时间 2025-06-16 21:04:57 内存使用 6.04 MiB
显示代码纯文本
#include <bits/stdc++.h>
#define ll long long
#define lowbit(x) x&-x
#define akarin 123456
using namespace std;
ll n,maxx = -1,ans,a[akarin], l[akarin], r[akarin],f[akarin];
void add(ll x, ll y) {
	for (; x <= maxx; x += lowbit(x)) f[x] += y;
} 

ll ask(ll x) {
	ll res = 0;
	for (; x; x -= lowbit(x)) res += f[x];
	return res;
}

int main() {
	freopen("cow.in", "r", stdin);freopen("cow.out", "w", stdout);
	cin>>n;
	for (ll i = 1; i <= n; ++i) {
		cin>>a[i];
		maxx = max(maxx, a[i]);
	}
	for (ll i = 1; i <= n; ++i) {
		l[i] = ask(maxx) - ask(a[i]);
		add(a[i], 1);
	}
	memset(f, 0, sizeof f);
	for (ll i = n; i >= 1; --i) {
		r[i] = ask(a[i] - 1);
		add(a[i], 1);
	}
	for (ll i = 1; i <= n; ++i) {
		ans+=(l[i] + r[i]) * a[i];
	}
	printf("%lld",ans);
	return 0;
}