52分求调
查看原帖
52分求调
167697
BartAllen楼主2024/3/28 13:01
#include <bits/stdc++.h>
using namespace std;

const int N = 1e5 + 5;

long long n, m, p1, p2, sum1, sum2;
long long c[N], s1, s2;

long long dis(long long x) {
	return abs(x - m);
}

long long _minus_(long long x1, long long x2) {
	return abs(x1 - x2);
}

int main () {
	cin >> n;
	for (int i = 1; i <= n; i++) cin >> c[i];
	cin >> m >> p1 >> s1 >> s2;
	for (int i = 1; i <= m - 1; i++) sum1 += c[i] * dis(i);
	for (int i = m + 1; i <= n; i++) sum2 += c[i] * dis(i);
	if (p1 <= m - 1) sum1 += s1 * dis(p1);
	if (p1 >= m + 1) sum2 += s1 * dis(p1);
	if (sum1 == sum2) {
		cout << m << endl;
		return 0;
	}
	if (sum1 < sum2) {
		int s, mind = 0x3f3f3f3f; p2 = 1;
		for (int i = 1; i <= m - 1; i++) {
			s = s2 * dis(i);
			if (mind > _minus_(s + sum1, sum2)) mind = _minus_(s + sum1, sum2), p2 = i;
		}
	}
	if (sum1 > sum2) {
		int s, mind = 0x3f3f3f3f; p2 = m + 1;
		for (int i = m + 1; i <= n; i++) {
			s = s2 * dis(i);
			if (mind > _minus_(s + sum2, sum1)) mind = _minus_(s + sum2, sum1), p2 = i;
		}
	}
	cout << p2 << endl;
	return 0;
}
2024/3/28 13:01
加载中...