#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 idx = bullets[i] - 1;
    monsters[idx] -= 2;
    if(idx > 0) {
        monsters[idx-1] -= 1;
    }
    if(idx < n-1) {
        monsters[idx+1] -= 1;
    }
}

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

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

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

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