L2-037 包装机
纯模拟。
#include <bits/stdc++.h>
using namespace std;
queue<char> qu[200];
int main() {
int n, m, cap;
cin >> n >> m >> cap;//轨道数量 初始物品数量
cin.get();
string s;
for (int i = 1; i <= n; i++) {//第i条轨道
getline(cin, s);
for (int j = 0; j < s.size(); j++) {
qu[i].push(s[j]);
}
}
vector<char> lanzi;//篮子
//从指定轨道上弹出
while (cin >> n && n != -1) {
if (n == 0) {
if (lanzi.empty()) continue;
char tc = lanzi.back();
lanzi.pop_back();//从篮子放到流水线
cout << tc;
}
else {
if (qu[n].empty()) continue;//如果是空的没办法弹出
char shuzi = qu[n].front();
qu[n].pop();
//检查篮子是否已满
if (lanzi.size() >= cap) {
char tc = lanzi.back();
lanzi.pop_back();//放到流水线
cout << tc;
lanzi.push_back(shuzi);
}
else {
//直接放到篮子里面
lanzi.push_back(shuzi);
}
}
}
return 0;
}