这个问题可以通过模拟游戏的过程来解决。我们可以遍历每一轮的出招,根据出招的规则来计算每一轮的伤害,并更新Acmer和Boss的血量。如果在某一轮结束后,Acmer的血量小于等于0,那么Boss赢;如果Boss的血量小于等于0,那么Acmer赢。如果所有的出招都结束后,两者的血量都大于0,那么输出"impossible"。
以下是使用C++的代码实现:
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, m, d;
cin >> n >> m >> d;
vector<int> boss(d), acmer(d);
for (int i = 0; i < d; ++i) {
cin >> boss[i];
}
for (int i = 0; i < d; ++i) {
cin >> acmer[i];
}
for (int i = 0; i < d; ++i) {
if (boss[i] > 0 && acmer[i] > 0) {
if (boss[i] > acmer[i]) {
n -= boss[i];
} else if (boss[i] < acmer[i]) {
m -= acmer[i];
}
} else if (boss[i] > 0 && acmer[i] < 0) {
if (boss[i] > -acmer[i]) {
n -= boss[i];
}
} else if (boss[i] < 0 && acmer[i] > 0) {
if (acmer[i] > -boss[i]) {
m -= acmer[i];
}
}
if (n <= 0) {
cout << "boss\n";
return 0;
}
if (m <= 0) {
cout << "acmer\n";
return 0;
}
}
cout << "impossible\n";
return 0;
}
在这段代码中,我们首先读取输入的Acmer和Boss的血量,以及出招的数目。然后我们读取Boss和Acmer的出招表。然后我们遍历每一轮的出招,根据出招的规则来计算每一轮的伤害,并更新Acmer和Boss的血量。如果在某一轮结束后,Acmer的血量小于等于0,那么我们输出"boss"并结束程序;如果Boss的血量小于等于0,那么我们���出"acmer"并结束程序。如果所有的出招都结束后,两者的血量都大于0,那么我们输出"impossible"。