35分WA求助
  • 板块P1908 逆序对
  • 楼主X2H_tato
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/8/11 08:26
  • 上次更新2023/11/3 04:34:49
查看原帖
35分WA求助
324226
X2H_tato楼主2023/8/11 08:26

不知道哪错了,跪谢有无大佬看一下

#include <bits/stdc++.h>
using namespace std;
int tree[500005];
int n;

struct node {
	int s, id;
	bool operator <(node oth) const {
		return s > oth.s;
	}
} a[500005];

int lowbit (int x) {
	return x & -x;
}

void add (int x) {
	for (int i = x; i <= n; i += lowbit(i))
		tree[i]++;
}

long long sol (int x) {
	int ans = 0;
	for (int i = x; i >= 1; i -= lowbit(i))
		ans += tree[i];
	return ans;
}

int main() {
	scanf("%d", &n);
	for (int i = 1; i <= n; i++) {
		scanf("%d", &a[i].s);
		a[i].id = i;
	}
	sort(a + 1, a + n + 1);
	long long ans = 0;
	for (int i = 1; i <= n; i++) {
		add(a[i].id);
		ans += sol(a[i].id - 1);
	}
	cout << ans;
	return 0;
}
2023/8/11 08:26
加载中...