#include #include

using namespace std;

int main() { int n; cin >> n;

vector<int> monsters(n);
for (int i = 0; i < n; i++) {
    cin >> monsters[i];
}

int m;
cin >> m;

vector<int> bullets(m);
for (int i = 0; i < m; i++) {
    cin >> bullets[i];
}

for (int i = 0; i < m; i++) {
    int bullet = bullets[i];

    monsters[bullet - 1] = max(0, monsters[bullet - 1] - 2);
    if (bullet > 1) {
        monsters[bullet - 2] = max(0, monsters[bullet - 2] - 1);
    }
    if (bullet < n) {
        monsters[bullet] = max(0, monsters[bullet] - 1);
    }
}

for (int i = 0; i < n; i++) {
    cout << monsters[i] << " ";
}
cout << endl;

return 0;
c++只用iostream库最简单有n只怪物排成一排编号从1到n。每一只怪物都有一个初始血量。你有m发子弹每次可以发射一发子弹攻击任意编号的怪物。如果你攻击的怪物编号为x那么编号为x的怪物的血量会下降2;与此同时如果x1则编号为x-1的怪物的血量会下降1;如果xn则编号为x+1的怪物的血量会下降1。需要注意的是怪物的血量最低会下降到0也就是说如果当前怪物的血量是1而你攻击了它那么它的血量也只会变为

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

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