@HASPID
查看原帖
@HASPID
1351155
liuzhuoran141516楼主2024/10/4 12:19
#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
struct jgt {
	long long a, b, q;
}c[100005];
bool cmp(jgt x, jgt y) {
	return x.a < y.a;
}
int n, t;
int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin >> n >> t;
	for (int i = 1; i <= n; i ++) {
		cin >> c[i].a;
	}
	for (int i = 1; i <= n; i ++) {
		cin >> c[i].b;
		if (c[i].b == 0) {
			c[i].a -= t;
		} else {
			c[i].a += t;
		}
		c[i].q = c[i - 1].q + c[i].a;
	}
	sort(c + 1, c + n + 1, cmp);
	for (int i = 1; i <= n; i ++) {
		c[i].q = c[i - 1].q + c[i].a;
	}
	unsigned long long ans = 0;
	for (int i = n; i > 1; i --) {
		ans += ((c[i].a * (i - 1)) - MOD - (c[i - 1].q - MOD));
		ans = ans % MOD;
	}
	cout << ans;
	return 0;
}
2024/10/4 12:19
加载中...