Trian(列车调度)

#include <iostream>
#include <stack>
#include <vector>

using namespace std;

int main(){
    int m, n, x, len;
    bool flag = 1;
    bool flag_ = 0;
    stack<int> A;
    vector<int> re;
    vector<int> tem;
    cin>>m;
    cin>>n;
    int nums[m];
    A.push(m+1);
    tem.push_back(-1);
    for(int i = 0;i < m;i ++){
        cin>>x;
        nums[i] = x;
    }
    len = 0;
    for(int i = m-1;i >=0;i --){
        tem.push_back(nums[i]);
        re.push_back(1);//pop操作
        len = tem.size();
        if(len > n+1){
            flag = 0;
            continue;
        }
        //cout << tem[len-1]<<" " << A.top()<<endl;
        while(tem[len-1] - A.top() == -1){
                //cout << A.top()<<"len:"<<len<<endl;
            A.push(tem[len-1]);
            tem.pop_back();
            re.push_back(-1);//push操作
            len = tem.size();
        }
    }
    //cout << flag << len << endl;
    if(len != 1 || flag == 0)
        cout << "no" << endl;
        else{
        for(int i = re.size()-1;i >0;i --)
        {
            if(re[i] == 1)
                cout<<"pop"<<endl;
            else
                cout<<"push"<<endl;
        }
      if(re[0] == 1){cout<<"pop";}
      if(re[0] == -1){cout<<"push";}
    }
    return 0;
}

 

posted @ 2019-03-28 12:22  vlice  阅读(394)  评论(0编辑  收藏  举报