#include <iostream>
#include <deque>
using namespace std;
const int N = 1<<20, K = 1000;
deque<int> d[1005];
int Ind[N];
int main(){
ios_base::sync_with_stdio(false); cin.tie(NULL);
int n, m, cur = 0;
string s;
cin>>n>>m>>s;
for (int i=1;i<=n;i++){
if (d[cur].size() == K)
cur++;
Ind[i] = cur;
d[cur].push_back(s[i-1] - 'x');
}
for (int i=1, l, r, num;i<=m;i++){
cin>>s[0]>>l;
if (s[0] == 'q'){
cout<<char('x' + d[Ind[l]][l - Ind[l] * K - 1])<<'\n';
continue;
}
cin>>r;
int i1 = Ind[l], i2 = Ind[r];
l -= i1 * K, r -= i2 * K;
num = d[i1][l - 1];
d[i1].erase(begin(d[i1]) + l - 1);
if (i1 < i2){
for (int j=i1;j<i2;j++)
d[j].push_back(d[j+1].front()), d[j+1].pop_front();
}
if (i1 > i2){
for (int j=i2;j<i1;j++)
d[j+1].push_front(d[j].back()), d[j].pop_back();
}
d[i2].insert(begin(d[i2]) + r - 1, num);
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |