#include #include using namespace std;

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

long long sum_l = 0; // 龙方的气势和
long long sum_r = 0; // 虎方的气势和
for (int i = 0; i < n; i++) {
    if (i < m - 1) {
        sum_l += c[i] * (m - 1 - i);
    } else if (i > m - 1) {
        sum_r += c[i] * (i - m + 1);
    }
}

long long diff = sum_r - sum_l; // 气势差距
int p2 = p1; // 选择的兵营编号
long long min_diff = diff; // 气势差距的最小值

for (int i = 0; i < n; i++) {
    if (i != m - 1) {
        long long new_sum_l = sum_l; // 新的龙方气势和
        long long new_sum_r = sum_r; // 新的虎方气势和

        if (i < m - 1) {
            new_sum_l -= c[i] * (m - 1 - i);
            new_sum_l += (c[i] + s2) * (m - 1 - i);
        } else {
            new_sum_r -= c[i] * (i - m + 1);
            new_sum_r += (c[i] + s2) * (i - m + 1);
        }

        long long new_diff = new_sum_r - new_sum_l; // 新的气势差距
        if (abs(new_diff) < abs(min_diff) || (abs(new_diff) == abs(min_diff) && i < p2 - 1)) {
            min_diff = new_diff;
            p2 = i + 1;
        }
    }
}

cout << p2 << endl;

return 0;

}

龙虎斗游戏:工兵策略优化

原文地址: https://www.cveoy.top/t/topic/plwO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录