//用栈来模拟撤销的题 #include<iostream> #include<stack> #include<algorithm> #include<string> using namespace std; int main() { //加速cin/cout ios::sync_with_stdio(false); cin.tie(0); int p; while(cin>>p) //多组输入报错,一个样例都没过,妈的 { string s; stack<string> st; st.push(s); //stack<int> op; //操作栈多余 while(p--) { int t; cin>>t; if(t==1) { string str; cin>>str; s.append(str); st.push(s); } else if(t==2) { int k; cin>>k; int len=(int)s.length(); s.erase(len-k,len); st.push(s); } else if(t==3) { int k; cin>>k; cout<<s[k-1]<<endl; } else//读题错误:op1或op2之前的状态 { st.pop(); s=st.top(); } } } return 0; }