坤 • 7个月前
using namespace std; long long a[100005];
int main() {
long long n, s1, p1, s2, p2, m;
scanf("%lld", &n);
for (int i = 1; i <= n; i++) {
scanf("%lld", &a[i]);
}
scanf("%lld%lld%lld%lld", &m, &p1, &s1, &s2);
a[p1] += s1;
long long l = 0, h = 0;
for (int i = 1; i < m; i++) //龙的气势
l += (m - i) * a[i];
for (int i = m + 1; i <= n; i++) //虎的气势
h += (i - m) * a[i];
long long b = abs(l - h); //气势之差
p2 = m;//中立兵营
long long min = b;
for (int i = 1; i <= n; i++) {//枚举s2位工兵在每一个位置的气势之差
long long ans1 = l, ans2 = h;
if (i < m) {
ans1 += (m - i) * s2;//s2位工兵加入龙的阵营后的气势
}
if (i > m) {
ans2 += (i - m) * s2;//s2位工兵加入虎的阵营后的气势
}
if (abs(ans1 - ans2) < min) {//s2位工兵加入阵营后的气势之差
min = abs(ans1 - ans2);//记录最小的气势之差
p2 = i;//记录s2位工兵气势之差最小值的位置
}
}
cout << p2;
return 0;
}
评论:
请先登录,才能进行评论