Cod sursa(job #2978112)

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

using namespace std;
using namespace __gnu_cxx;

FILE *in=fopen("secv8.in","r");
FILE *out=fopen("secv8.out","w");

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; fscanf(in, "%d %d", &k, &c);

    while(k--) {
        char t; fscanf(in, " %c", &t);
        if(t == 'I') {
            int p, x; fscanf(in, "%d %d", &p, &x); p--;
            s.insert(p, x);
            s.insert(s.size() - p, x);
        }
        if(t == 'A') {
            int p; fscanf(in, "%d", &p);
            fprintf(out, "%d\n", s[p - 1]);
        }
        if(t == 'R') {
            int l, r; fscanf(in, "%d %d", &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; fscanf(in, "%d %d", &l, &r);
            l--; r--;
            s.erase(s.size() - r - 1, 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) fprintf(out, "%d ", e);

    return 0;
}