제출 #1323420

#제출 시각아이디문제언어결과실행 시간메모리
1323420Jawad_Akbar_JJ입자 가속기 (IZhO11_collider)C++20
100 / 100
31 ms10236 KiB
#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 timeMemoryGrader output
Fetching results...