车厢调度--栈
作者:
RecSys
,
2021-04-17 10:52:08
,
所有人可见
,
阅读 350
#include <iostream>
#include <cstring>
#include <algorithm>
#include<stack>
//车厢调度--栈
using namespace std;
const int MOD=1000000007;
const int N=10000+5;
const int dx[]= {-1,1,0,0};
const int dy[]= {0,0,-1,1};
using namespace std;
int a[N];
stack<int> S;
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)//a[i]为到达B站的车厢
cin>>a[i];
int cur=1;//cur为需要进栈的车厢
for(int i=1;i<=n;i++)//进栈,到达A站;出栈,到达B站
{
while(cur<=a[i])//比a[i]小的车厢都要在栈中
S.push(cur++);
if(S.top()==a[i])//将a[i]弹出栈
S.pop();
else
{
cout<<"NO"<<endl;
return 0;
}
}
cout<<"YES"<<endl;
return 0;
}