제출 #1325683

#제출 시각아이디문제언어결과실행 시간메모리
1325683muhammad-ahmad입자 가속기 (IZhO11_collider)C++20
0 / 100
0 ms332 KiB
#include <bits/stdc++.h>
using namespace std;

#define endl '\n';

const int N = 1e6 + 5;

int main(){
	int n, q; cin >> n >> q;
	string s; cin >> s;
	int sq = sqrt(n) + 1;
	vector<deque<int>> a = {{}};
	for (auto i : s) {
		a.back().push_back(i - 'w');
		if ((int) a.back().size() == sq) a.push_back({});
	}
	if (a.back().empty()) a.pop_back();
	
	for (int Q = 1; Q <= q; Q++){
		char t; cin >> t;
		if (t == 'a'){
			int u, v; cin >> u >> v;
			if (u == v) continue;
			u--, v--;
			int sqidxu = u / sq, idxu = u % sq;
			int sqidxv = v / sq, idxv = v % sq;
			// cout << sqidxu << ' ' << idxu << endl;
			// cout << sqidxv << ' ' << idxv << endl;
			int x = a[sqidxu][idxu];
			a[sqidxu].erase(a[sqidxu].begin() + idxu);
			a[sqidxv].insert(a[sqidxv].begin() + idxv, x);
			for (int i = 0; i < (int) a.size() - 1; i++){
				if (a[i].size() == sq - 1){
					int nxt = a[i + 1].front();
					a[i + 1].pop_front();
					a[i].push_back(nxt);
				}
				else if (a[i].size() == sq + 1){
					int nxt = a[i].back();
					a[i].pop_back();
					a[i + 1].push_front(nxt);
				}
			}
		}
		else {
			int u; cin >> u;
			u--;
			cout << char('w' + a[u / sq][u % sq]) << endl;
		}
	}
	// for (auto i : a){
		// for (auto j : i) cout << j << ' ';
		// cout << endl;
	// }
}
#Verdict Execution timeMemoryGrader output
Fetching results...