AC

 •  17天前


#include <iostream>
#include <vector>
#include <cmath>
using namespace std;

int main() {
	int n;
	cin >> n;
	vector<long long> c(n);
	for (int i = 0; i < n; i++) {
		cin >> c[i];
	}
	int m, p1;
	long long s1, s2;
	cin >> m >> p1 >> s1 >> s2;

	long long L = 0, T = 0;
	for (int i = 1; i <= n; i++) {
		if (i < m) {
			L += c[i - 1] * (m - i);
		} else if (i > m) {
			T += c[i - 1] * (i - m);
		}
	}

	if (p1 < m) {
		L += s1 * (m - p1);
	} else if (p1 > m) {
		T += s1 * (p1 - m);
	}

	long long best_diff = abs(L - T);
	int best_p2 = m;

	for (int p2 = 1; p2 <= n; p2++) {
		long long L_new = L;
		long long T_new = T;
		if (p2 < m) {
			L_new += s2 * (m - p2);
		} else if (p2 > m) {
			T_new += s2 * (p2 - m);
		}
		long long diff = abs(L_new - T_new);
		if (diff < best_diff) {
			best_diff = diff;
			best_p2 = p2;
		} else if (diff == best_diff && p2 < best_p2) {
			best_p2 = p2;
		}
	}

	cout << best_p2 << endl;

	return 0;
}

评论:

请先登录,才能进行评论