实现
#include<stdio.h>
#include<vector>
using namespace std;
struct state{
int life,power;
state(int a=0,int b=0):life(a),power(b){}
};
vector<state>p[2];
int T,sz,now;
char str_buf[0x1ff];
int main(){
p[0].push_back(state(30,0));
p[1].push_back(state(30,0));
for(scanf("%d",&T);T--;){
scanf("%s",str_buf);
if(str_buf[0]=='s'){
int position, attack, health;
scanf("%d%d%d",&position,&attack,&health);
p[now].insert(p[now].begin() + position,state(health, attack));
} else if(str_buf[0]=='a'){
int attacker, defender;
scanf("%d%d",&attacker,&defender);
p[now][attacker].life -= p[now^1][defender].power;
p[now^1][defender].life -= p[now][attacker].power;
if(p[now][attacker].life<=0) {
p[now].erase(p[now].begin()+attacker);
}
if(defender!=0&&p[now^1][defender].life<=0) {
p[now^1].erase(p[now^1].begin()+defender);
}
} else if(str_buf[0]=='e'){
now^=1;
}
}
if(p[0][0].life > 0 && p[1][0].life > 0) {
puts("0");
} else {
puts(p[0][0].life<=0?"-1":"1");
}
printf("%d
%d ",p[0][0].life,(sz=p[0].size())-1);
for(int i=1;i<sz;i++) {
printf("%d ",p[0][i].life);
}
puts("");
printf("%d
%d ",p[1][0].life,(sz=p[1].size())-1);
for(int i=1;i<sz;i++) {
printf("%d ",p[1][i].life);
}
return 0;
}
参考
shenben