淘先锋技术网

首页 1 2 3 4 5 6 7

陆陆平时除了打王者荣耀之外,还喜欢去打弹珠。由于陆陆实在是太喜欢打弹珠了,因此她在家里珍藏了n把弹珠枪,每一把弹珠枪都能装m个弹珠。

这天,由于太久没有打弹珠了,再加上之前在王者荣耀战队赛中输给了老对手乐乐,陆陆今天非常想发泄一下情绪,去弹珠场射个痛快。在开始射击之前,陆陆又重新温习了一遍规则:

① 弹珠场上有一个弹珠夹,陆陆每次射击时需要将弹珠射入弹珠夹的底部,不过既然陆陆是一个神枪手,那么我们认为能够百发百中,不会出现射偏的情况。弹珠夹的最大容量为s。

② 在射击台上有一个电子屏,上面显示着每一轮射击游戏的要求。当电子屏显示0时,弹珠夹会将最上面的弹珠弹出,这时陆陆需要记录这颗射出的弹珠种类;当电子屏显示i时,陆陆需要使用第i把枪将其中的第一个弹珠射入弹珠夹中。当电子屏显示-1时,游戏结束。

③ 弹珠的种类用大写字母表示。

此外,还需要注意以下三点:

  1. 如果电子屏显示0,但是弹珠夹中没有弹珠时,不会弹出任何弹珠,陆陆也不需要做记录

  2. 如果电子屏显示i,但第把枪中没有弹珠时,陆陆不需要射击。

  3. 如果电子票显示i,但弹珠夹已经达到最大容量,弹珠夹会弹出最上面的弹珠,乐乐同样需要记录弹珠的种类。

请问,一轮比赛结束后,陆陆需要在纸上记录哪些内容?

输入格式:

第一行三个正整数,n, m, s,含义见题目,n, m <= 100, s <= 1000。

接下来n行,每行m个字母,表示弹珠枪开始装的弹珠。

接下来若干行,每行一个正整数,表示这轮游戏的操作要求。

输出格式:

输出一行,表示陆陆记录的所有弹珠的种类。

限制:

空间限制:128MByte

时间限制:1秒

样例:

输入:

3 2 3

A B

C D

E F

1

3

0

2

1

0

1

0

3

2

-1

输出:

EBC

模拟,代码如下:

#include<iostream>
#include<queue>
#include<stack>
using namespace std;
const int N=1e5;
stack<char> s;
queue<char> q[N+100];
int n,m,a,k,u=0;
char l,d[N+100];
int main(){
	cin>>n>>m>>k;
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			cin>>l;
			q[i].push(l);
		}
	}
	while(cin>>a){
		if(a==-1){
			break;
		}
		if(a){
			if(s.size()!=k&&!q[a-1].empty()){
				s.push(q[a-1].front());
				q[a-1].pop();
			}
			else if(s.size()==k&&!q[a-1].empty()){
				d[u++]=s.top();
				s.pop();
				s.push(q[a-1].front());
				q[a-1].pop();
			}
			continue;
		}
		else if(!a){
			if(s.size()){
				d[u++]=s.top();
				s.pop();
			}
			continue;
		}
	}
	for(int i=0;i<u;i++){
		cout<<d[i];
	}
	return 0;
}