69 lines
2.1 KiB
C++
69 lines
2.1 KiB
C++
#include <bits/stdc++.h>
|
||
|
||
using namespace std;
|
||
|
||
int a[101] = {0};
|
||
|
||
int main() {
|
||
//输入+输出重定向
|
||
freopen("../1134.txt", "r", stdin);
|
||
|
||
//代表兵营的数量
|
||
int n;
|
||
cin >> n;
|
||
for (int i = 1; i <= n; i++) {
|
||
cin >> a[i];
|
||
}
|
||
int m, p1, s1, s2;
|
||
cin >> m >> p1 >> s1 >> s2;
|
||
//比m小的是龙方,比m大的是虎方 1-->m-1 m+1-->n
|
||
// 龙的气势,虎的气势
|
||
int dragon = 0, tiger = 0;
|
||
for (int i = 1; i <= m - 1; ++i) {
|
||
dragon += (m - i) * a[i];
|
||
}
|
||
for (int i = m + 1; i <= n; ++i) {
|
||
tiger += (i - m) * a[i];
|
||
}
|
||
//现在s1位工兵出现在p1号兵营
|
||
if (p1 < m) { //如果出现在龙一方
|
||
dragon += (m - p1) * s1;
|
||
} else { //如果出现在虎一方
|
||
tiger += (p1 - m) * s1;
|
||
}
|
||
// 如果存在多个编号同时满足最优,取最小的编号。
|
||
// 从第1号兵营开始尝试,找到最合适的解
|
||
int minCha = abs(dragon - tiger);
|
||
int result = 0;
|
||
if (m == p1) {//这个还往没用的地方放,shit~
|
||
result = m;
|
||
} else if (dragon > tiger) { //放到虎方谁大,就向另一方放
|
||
for (int i = m + 1; i <= n; i++) {
|
||
int t = tiger;
|
||
t += s2 * (i - m);
|
||
if (abs(dragon - t) < minCha) {
|
||
//cout << "虎:dragon:" << dragon << ",tiger:" << t << endl;
|
||
minCha = abs(dragon - t);
|
||
result = i;
|
||
}
|
||
}
|
||
} else {
|
||
//放到龙方
|
||
for (int i = 1; i <= m - 1; i++) {
|
||
int t = dragon;
|
||
t += s2 * (m - i);
|
||
if (abs(t - tiger) < minCha) {
|
||
//cout << "龙:dragon:" << t << ",tiger:" << tiger << ",加了" << s2 * (m - i) << endl;
|
||
minCha = abs(t - tiger);
|
||
result = i;
|
||
}
|
||
}
|
||
}
|
||
//输出:
|
||
//输出文件有一行,包含一个正整数,即 p2,表示你选择的兵营编号。如果存在多个编号同时满足最优,取最小的编号。
|
||
cout << result << endl;
|
||
//关闭文件
|
||
fclose(stdin);
|
||
return 0;
|
||
}
|