Cod sursa(job #2978106)

Utilizator redstonegamer22Andrei Ion redstonegamer22 Data 12 februarie 2023 23:12:24
Problema Secv8 Scor 25
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.41 kb
#pragma GCC optimize("Ofast")
#define LIBCXX_ENABLE_THREADS OFF
#include <bits/stdc++.h>
#include <ext/rope>

using namespace std;
using namespace __gnu_cxx;

#ifndef LOCAL
ifstream in("secv8.in");
ofstream out("secv8.out");
#define cin in
#define cout out
#endif // LOCAL

int main()
{
    #ifndef LOCAL
        ios_base::sync_with_stdio(false);
        cin.tie(0); cout.tie(0);
    #endif // LOCAL

    rope<int, allocator<int>> s;
    int k, c; cin >> k >> c;

    while(k--) {
        char t; cin >> t;
        if(t == 'I') {
            int p, x; cin >> p >> x; p--;
            s.insert(p, x);
            s.insert(s.size() - p, x);
        }
        if(t == 'A') {
            int p; cin >> p;
            cout << s[p - 1] << '\n';
        }
        if(t == 'R') {
            int l, r; cin >> l >> r; l--; r--;
            s = s.substr(0, l) + s.substr(s.size() - r - 1, r - l + 1) + s.substr(r + 1, s.size() - 2 * r - 2) + s.substr(l, r - l + 1) + s.substr(s.size() - l, l);
        }
        if(t == 'D') {
            int l, r; cin >> l >> r; l--; r--;
            s.erase(s.size() - r, r - l + 1);
            s.erase(l, r - l + 1);
        }

        #ifdef LOCAL
            cerr << "\t\tS: "; for(auto e : s) cerr << e << " "; cerr << endl;
        #endif // LOCAL
    }

    s = s.substr(0, s.size() / 2);
    for(auto e : s) cout << e << " "; cout << '\n';

    return 0;
}