Pagini recente » Cod sursa (job #2895209) | Cod sursa (job #2984242)
// mirror trick
#include <bits/stdc++.h>
#include <ext/rope>
#pragma GCC optimize("Ofast,unroll-loops")
#pragma GCC target("bmi,bmi2,lzcnt,popcnt")
using namespace std;
using namespace __gnu_cxx;
ifstream fin("secv8.in");
ofstream fout("secv8.out");
int Q, r;
rope<int> s, mirror;
int main() {
ios_base :: sync_with_stdio(false);
fin >> Q >> r;
for(int i = 0; i < Q; i++) {
char task;
fin >> task;
if(task == 'I') {
int k, e;
fin >> k >> e;
k--;
mirror.insert(s.size() - k, e);
s.insert(k, e);
} else if(task == 'A') {
int k;
fin >> k;
k--;
fout << s[k] << '\n';
} else if(task == 'R') {
int l, r;
fin >> l >> r;
l--; r--;
rope<int> subs = s.substr(l, r - l + 1);
s.replace(l, r - l + 1, mirror.substr(s.size() - r - 1, r - l + 1));
mirror.replace(s.size() - r - 1, r - l + 1, subs);
} else {
int l, r;
fin >> l >> r;
l--; r--;
mirror.erase(s.size() - r - 1, r - l + 1);
s.erase(l, r - l + 1);
}
}
for(const auto &it: s) {
fout << it << " ";
}
fin.close();
fout.close();
return 0;
}