一、问题链接
CSP 201609-3 炉石传说
二、参考代码
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
ll n;
cin>>n;
string s;
vector<vector<array<ll,2>>> v(2);
v[0].push_back({0,30});
v[1].push_back({0,30});
ll player=0;
while(n--){
cin>>s;
if(s=="summon"){
ll pos,att,hea;
cin>>pos>>att>>hea;
v[player].insert(pos+v[player].begin(),{att,hea});
continue;
}else if(s=="end"){
player=player xor 1;
continue;
}else{
ll att,def;
cin>>att>>def;
v[player][att][1]-=v[player xor 1][def][0];
v[player xor 1][def][1]-=v[player][att][0];
if(v[player][att][1]<=0) {
v[player].erase(v[player].begin()+att);
}
if(v[player xor 1][def][1]<=0 and def!=0){
v[player xor 1].erase(v[player xor 1].begin()+def);
}
}
}
if(v[0][0][1]<=0) cout<<-1<<"\n";
else if(v[1][0][1]<=0) cout<<1<<"\n";
else cout<<0<<"\n";
for(int i=0;i<=1;i++){
cout<<v[i][0][1]<<"\n";
cout<<v[i].size()-1<<" ";
for(int j=1;j<v[i].size();j++){
cout<<v[i][j][1]<<" ";
}
cout<<"\n";
}
return 0;
}