WA on #6 求助
查看原帖
WA on #6 求助
292300
Kobe303楼主2021/9/21 15:52
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define il inline
const int N = 1000005;
int n, p;
ll pre[N], s[N], c[N];
ll ans;

il void add(int x, int y) {
	for (; x <= n; x += x & -x) c[x] += y;
}

il int ask(int x) {
	int res = 0;
	for (; x; x -= x & -x) res += c[x];
	return res;
}

int main() {
	scanf("%d", &n);
	for (int i = 1; i <= n; ++i) {
		int x; scanf("%d", &x);
		pre[i] = pre[i - 1] + x;	
	}
	scanf("%d", &p);
	int cnt = 0;
	for (int i = 0; i <= n; ++i) s[++cnt] = pre[i] - (ll)p * i;
	std::sort(s + 1, s + cnt + 1);
	int m = unique(s + 1, s + cnt + 1) - (s + 1);
	for (int i = 0; i <= n; ++i) {
		int id = lower_bound(s + 1, s + m + 1, pre[i] - (ll)p * i) - s;
		ans += ask(id);
		add(id, 1);
	}
	printf("%lld", ans);
	return 0;
} 

思路应该没什么问题。

我寻思着该开的 long long 也都开了

2021/9/21 15:52
加载中...