Submission #425824

#TimeUsernameProblemLanguageResultExecution timeMemory
425824AzimjonCrayfish scrivener (IOI12_scrivener)C++17
26 / 100
213 ms10748 KiB
#include <bits/stdc++.h>

using namespace std;

const int N = 1111111;
int p[N], v[N];

int cnt = 0;

void Init() {
	p[0] = -1;
	v[0] = '-';
}

void TypeLetter(char L) {
	int id = ++cnt;

	p[id] = cnt - 1;
	v[id] = L;
}

void UndoCommands(int U) {
	int par = cnt;
	int t = U;
	while (t--) {
		par--;
	}

	int id = ++cnt;

	p[id] = par;
	v[id] = '-';

	// for (int i = 0; i <= 20; i++) {
	// 	cout << p[i] << " ";
	// }
	// cout << endl;
	// for (int i = 0; i <= 20; i++) {
	// 	cout << (char)v[i] << " ";
	// }
	// cout << endl;
}

string s;

void solve() {
	if (!s.empty()) return;
	int pr = cnt;

	while (pr != -1) {
		if (v[pr] != '-') s.push_back(v[pr]);
		pr = p[pr];
	}

	reverse(s.begin(), s.end());
}

char GetLetter(int P) {
	solve();
	return s[P];
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...