# L2-037 包装机

题目链接：https://pintia.cn/problem-sets/994805046380707840/exam/problems/type/7?problemSetProblemId=1386335159927652360&page=1

本题主要考察栈的运用，按照题目要求一步步走就没什么问题

**小经验：一般L2-1都比较喜欢考栈**
### 一个避坑点：我一开始写while循环的时候把cin>>op写在了循环里面，导致提交的时候有一些用例会超时，建议把cin>>op的操作放在while循环的括号里，这样不会出问题
具体代码如下：
```cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
    int N,M,Smax;
    cin>>N>>M>>Smax;
    vector<queue<char>> res(N+1);//vector数组中可以是queue元素
    for(int i=1;i<=N;i++){
        string s; cin>>s;
        for(auto &c:s ){//注意这种写法，简单方便
            res[i].push(c);
        }
    }
    stack<char> blanket;
    vector<char> result;
    int op;
    //这样写while循环不容易出现死循环，如果放在函数体里面写的话，可能会出现死循环导致运行超时
    while(cin>>op && (op!=-1)){
        if((res[op].empty() && (op!=0)) || (blanket.empty() && (op==0))){
            continue;
        }
        else if(!res[op].empty() && (op!=0)){
            if(blanket.size()==Smax){
                result.push_back(blanket.top());
                blanket.pop();
                blanket.push(res[op].front());
                res[op].pop();
            }
            else{
                blanket.push(res[op].front());
                res[op].pop();
            }
        }
        else if(!blanket.empty() && (op==0)){
            result.push_back(blanket.top());
            blanket.pop();
        }
    }
    for(int i=0;i<result.size();i++){
        cout<<result[i];
    }
    return 0;
}
