Cod sursa(job #3236920)

Utilizator deerMohanu Dominic deer Data 3 iulie 2024 16:26:46
Problema Secv8 Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <bits/stdc++.h>
#include <ext/rope>
using __gnu_cxx::rope;
//using namespace __gnu_pbds;
#define fi first
#define se second

#define sz(a) int((a).size())
#define all(a) (a).begin(), (a).end()

#define lsb(x) (x & (-x))

#define YES { fout << "DA" << endl; return; }
#define NO { fout << "NU" << endl; return; }

using ll = long long;
using pii = std::pair<int, int>;

using namespace std;
ifstream fin ("secv8.in");
ofstream fout ("secv8.out");
rope<int>s, rev;
int q, morb, k, e, l, r;
char ch;
signed main() {
    fin >> q >> morb;
    for (int i = 1; i <= q; ++i){
        fin >> ch;
        if(ch == 'I') {
            fin >> k >> e;
            --k;
            rev.insert(s.size() - k, e);
            s.insert(k, e);
        }
        if(ch == 'A') {
            fin >> k;
            fout << s[--k] << "\n";
        }
        if (ch == 'D'){
            fin >> l >> r;
            --l, --r;
            rev.erase(s.size() - r - 1, r - l + 1);
            s.erase(l, r - l + 1);
        }
        if(ch == 'R') {
            fin >> l >> r;
            --l, --r;
            auto copie = s.substr(l, r - l + 1);
            s.replace(l, r - l + 1, rev.substr(s.size() - r - 1, r - l + 1));
            rev.replace(s.size() - r - 1, r - l + 1, copie);
        }
    }
    for (auto it:s)
        fout << it << " ";
    return 0;
}