Cod sursa(job #3251108)

Utilizator CReaper1116Shang Cheng Lin CReaper1116 Data 24 octombrie 2024 22:33:54
Problema Secv8 Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.66 kb
#include<bits/stdc++.h>
#include<ext/rope>
#define cin fin
#define cout fout
using namespace std;
using namespace __gnu_cxx;
ifstream fin("secv8.in");
ofstream fout("secv8.out");
rope <int> v,rv,tmp;
int main(){
    int n,t;
    cin>>n>>t;
    for(int i = 0;i < n;i++){
        char x;
        cin>>x;
        if(x == 'I'){
            int a,b,ra;
            cin>>a>>b;
            a--;
            ra = (int)v.size() - a;
            //cout<<"aa:"<<ra<<' ';
            v = v.substr(0,a) + b + v.substr(a,(int)v.size() - a);
            rv = rv.substr(0,ra) + b + rv.substr(ra,(int)v.size() - ra);
        }else if(x == 'A'){
            int nr;
            cin>>nr;
            nr--;
            cout<<v[nr]<<'\n';
        }else if(x == 'D'){
            int a,b;
            cin>>a>>b;
            a--;b--;
            int ra = (int)v.size() - a - 1;
            int rb = (int)v.size() - b - 1;
            v = v.substr(0,a) + v.substr(b + 1,(int)v.size() - (b + 1));
            rv = rv.substr(0,rb) + rv.substr(ra + 1,(int)rv.size() - (ra + 1));
        }else{
            ///????
            int a,b;
            cin>>a>>b;
            a--;b--;
            int ra = (int)v.size() - 1 - a;
            int rb = (int)v.size() - 1 - b;
            tmp = v.substr(0,a) + rv.substr(rb,ra + 1 - rb) + v.substr(b + 1,(int)v.size() - (b + 1));
            rv = rv.substr(0,rb) + v.substr(a,b + 1 - a) + rv.substr(ra + 1,(int)rv.size() - (ra + 1));
            v = tmp;
        }
        /*for(auto i:v){
            cout<<i<<' ';
        }
        cout<<'\n';*/
    }
    for(auto i:v){
        cout<<i<<' ';
    }
    cout<<'\n';
    return 0;
}