c++有n只怪物排成一排编号从1到n。每一只怪物都有一个初始血量。你有m发子弹每次可以发射一发子弹攻击任意编号的怪物。如果你攻击的怪物编号为x那么编号为x的怪物的血量会下降2;与此同时如果x1则编号为x-1的怪物的血量会下降1;如果xn则编号为x+1的怪物的血量会下降1。需要注意的是怪物的血量最低会下降到0也就是说如果当前怪物的血量是1而你攻击了它那么它的血量也只会变为0而不会变为-1。现在告诉你
#include
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;
原文地址: https://www.cveoy.top/t/topic/ipFv 著作权归作者所有。请勿转载和采集!