数据结构+模拟
直接按照题意写即可
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<iomanip>
#include<queue>
#include<stack>
#include<vector>
#include<unordered_set>
#include<unordered_map>
#include<map>
#include<set>
using namespace std;
typedef long long int ll;
int n=0,m=0,s=0;
vector<string> vts;
int main(){
cin >> n >> m >> s;
vts.push_back(" ");
for(int i=1;i<=n;i++){
string st;
cin >> st;
vts.push_back(st);
}
stack<char> sta;
queue<char> qu;
while(true){
int t;
cin >> t;
if(t==-1){
break;
}
if(t>0 && vts[t].size()>0){
if(sta.size()==s){
qu.push(sta.top());
sta.pop();
}
sta.push(vts[t][0]);
//cout << vts[t][0] << "\n";
vts[t].erase(0,1);
}
else if(t==0 && sta.size()>0){
qu.push(sta.top());
sta.pop();
}
}
while(qu.size()>0){
cout << qu.front();
qu.pop();
}
}