站外题求助QAQ
查看原帖
站外题求助QAQ
1169788
xiaokang_suancai楼主2024/7/10 16:43

T2 作文\

你在写作文。你有三种操作。

  1. T x: 在文章末尾写下一个小写字母 x。
  2. U x: 撤销最后的 x 次修改操作。(只有操作 1 和 2 算修改操作)
  3. Q x: 询问当前文章中第 x 个字母并输出。 文章一开始可以视作空串。

输入格式

一行一个整数 n 表示操作数量。
之后 n 行依次给出 n 个命令,保证命令合法。

输出格式

每行输出一个字母表示一次询问的答案。\

样例

输入
7
T a
T b
T c
Q 2
U 2
T c
Q 2
输出
b
c
数据范围
n<=200\

代码

注:代码十分鬼畜,不喜勿喷,谢谢。

#include<bits/stdc++.h>
using namespace std;
int n,tail=0;
char cmd1,cmd2;
string s;
struct cmd
{
	char cmd1,cmd2;
}a[10010];
stack<cmd>cmds;
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i].cmd1>>a[i].cmd2;
		cmds.push(a[i]);
		if(cmd1=='T')
		{
			s[tail+1]=cmd2;
			tail++;
		}
		else if(cmd1=='U')
		{
			for(int j=1;j<=a[i].cmd2;j++)
			{
				if(cmds.top().cmd1=='U')
				{
					tail+=cmds.top().cmd2;
					cmds.pop();
				}
				else if(cmds.top().cmd1=='T')
				{
					tail--;
					cmds.pop();
				}
			}
		}
		else if(cmd1=='Q')
		{
			cout<<s[cmd2-'0']<<endl;
		}
	}
	return 0;
}
2024/7/10 16:43
加载中...