#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<map>
#include<vector>

using namespace std;
int n;
string cmd;
int now=0;
struct node{
    int attack;
    int health;
    node(int _attack,int _health):attack(_attack),health(_health){}
};
vector<node> smn[2];
vector<node>::iterator it;

void init(){
    for(int i=0;i<2;i++){
        smn[i].clear();
        smn[i].push_back(node(0,30));
    }
    now=0;
}
void summon(){
    int position,attack,health;
    cin>>position>>attack>>health;
    it=smn[now].begin();
    smn[now].insert(it+position,node(attack,health));
}
void attack(){
    int attacker,defender;
    cin>>attacker>>defender;
    smn[now][attacker].health-=smn[now^1][defender].attack;
    smn[now^1][defender].health-=smn[now][attacker].attack;
    for(int i=0;i<2;i++){
        for(it=smn[i].begin()+1;it<smn[i].end();it++){
            if((*it).health<=0){
                smn[i].erase(it);
            }
        }
    }
}
void end(){
    if(smn[0][0].health<=0&&smn[1][0].health>0){
        printf("-1\n");
    }else if(smn[0][0].health>0&&smn[1][0].health>0){
        printf("0\n");
    }else{
        printf("1\n");
    }
    for(int i=0;i<2;i++){
        printf("%d\n",smn[i][0].health);
        printf("%d",(int)smn[i].size()-1);
        for(int j=1;j<(int)smn[i].size();j++){
            printf(" %d ",smn[i][j].health);
        }
        printf("\n");
    }

}
int main(){
    init();
    cin>>n;
    while(n--){
        cin>>cmd;
        if(cmd=="summon"){
            summon();
        }else if(cmd=="attack"){
            attack();
        }else if(cmd=="end"){
            now^=1;
        }
    }
    end();
    return 0;
}

 

相关文章:

  • 2021-09-07
  • 2018-11-21
  • 2021-04-30
  • 2021-04-03
  • 2021-07-27
  • 2021-06-23
  • 2021-07-02
猜你喜欢
  • 2021-07-07
  • 2021-09-28
  • 2021-08-08
  • 2022-02-26
  • 2021-06-19
相关资源
相似解决方案