#include<bits/stdc++.h>
 using namespace std;
 string s[30];
 bool Isnum(string k){//??????0~99999???
    int len=k.size();
    if(len>5)   return 0;
    for(int i=0;i<len;i++){
        if(k[i]<'0'||k[i]>'9')  return 0;
    }
    return 1;
 }
 int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){//??n????????????
        cin>>s[i];
    }
    string a;
    while(getline(cin,a)){//????????????
        if(a=="over")   break;
        a=" "+a;
        int t=0;
        stack<string> st;
        for(int i=a.size()-1;i>=0;i--){
            if(a[i]==' '){
                string b=a.substr(i+1,t);
                if(b=="copy"){//copy???????,???????????
                    int x1=stoi(st.top());
                    st.pop();
                    int x2=stoi(st.top());
                    st.pop();
                    int x3=stoi(st.top());
                    st.pop();
                    st.push(s[x1].substr(x2,x3));
                }else if(b=="add"){
                    string x1=st.top();
                    st.pop();
                    string x2=st.top();
                    st.pop();
                    if(Isnum(x1)&&Isnum(x2)){
                        st.push(to_string(stoi(x1)+stoi(x2)));
                    }else{
                        st.push(x1+x2);
                    }
                }else if(b=="find"){
                    string x1=st.top();
                    st.pop();
                    int x2=stoi(st.top());
                    st.pop();
                    int pos=s[x2].find(x1);
                    if(pos==-1){
                    	st.push(to_string(s[x2].size()));
					}else{
						st.push(to_string(pos));
					}
                }else if(b=="rfind"){
                    string x1=st.top();
                    st.pop();
                    int x2=stoi(st.top());
                    st.pop();
                    int pos=s[x2].rfind(x1);
                    if(pos==-1){
                    	st.push(to_string(s[x2].size()));
					}else{
						st.push(to_string(pos));
					}
                }else if(b=="insert"){
                    string x1=st.top();
                    st.pop();
                    int x2=stoi(st.top());
                    st.pop();
                    int x3=stoi(st.top());
                    st.pop();
                    s[x2].insert(x3,x1);
                }else if(b=="reset"){
                    string x1=st.top();
                    st.pop();
                    int x2=stoi(st.top());
                    st.pop();
                    s[x2]=x1;
                }else if(b=="print"){
                    int x1=stoi(st.top());
                    st.pop();
                    cout<<s[x1]<<"\n";
                }else if(b=="printall"){
                    for(int i=1;i<=n;i++){
                        cout<<s[i]<<"\n";
                    }
                }else{
                    st.push(b);
                }
                t=0;
            }else{
                t++;
            }
        }   
    }
    return 0;
 }

0 条评论

目前还没有评论...

信息

ID
21
时间
1000ms
内存
256MiB
难度
1
标签
递交数
170
已通过
43
上传者