1357:车厢调度(train)

车厢调度

将入口A和车站C分别视为一个栈,其中A栈可以弹出到B或C,C只能弹出到B。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<stack>
 4 using namespace std;
 5 
 6 const int N=1005;
 7 stack<int> sa,sc;
 8 int b[N];
 9 
10 int main(){
11     int n;
12     cin>>n;
13     for(int i=1;i<=n;i++)
14         scanf("%d",b+i);
15     for(int i=n;i>0;i--)sa.push(i);
16     int p=1;
17     while(p<=n){
18         if(!sa.empty()&&sa.top()==b[p]){
19             sa.pop();
20             p++;
21         }else if(!sc.empty()&&sc.top()==b[p]){
22             sc.pop();
23             p++;
24         }else{
25             if(sa.empty())break;
26             sc.push(sa.top());
27             sa.pop();
28         }
29     }
30     if(p>n)cout<<"YES";
31     else cout<<"NO";
32     return 0;
33 }

 

posted @ 2021-08-25 15:50  Rekord  阅读(659)  评论(0编辑  收藏  举报