201609-3 炉石传说

实现

#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\n%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\n%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

posted @ 2020-08-31 23:16  amonqsq  阅读(128)  评论(0编辑  收藏  举报