原题链接
/*
指令
A. 将A上的头一辆车驶出B方向
B. 将A上的头一辆车停入暂停轨道
C. 将暂停轨道上最外面的车驶出B方向
不可行
暂停站满了还停车、暂停站空了还出车
15
AABCBBBCCBBCCCA
*/
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
stack<int> c; //中转站c
string oder; //指令
int temp[31];
temp[0]=0;
while(scanf("%d",&n)!=EOF){
bool OK=true;
cin>>oder;
int cnt=0;
int k=1; //控制A车站车号
for(int i=0;i<n;i++){
if(oder[i]=='A'){ // A上的头一辆车驶出B方向
temp[ ++temp[0] ]=k++;
}
else if(oder[i]=='B'){ // A上的头一辆车停入暂停轨道
if(cnt>=5){ // 停满还再停直接 No
OK=false;
break;
}
c.push(k++);
cnt++; // 停完中转站车辆数+1
}
else{ // 将暂停轨道上最外面的车驶出B方向
if(c.empty()){ // 如果