Submission #120477

# Submission time Handle Problem Language Result Execution time Memory
120477 2019-06-24T15:54:17 Z KieranHorgan Crayfish scrivener (IOI12_scrivener) C++17
100 / 100
804 ms 90692 KB
#include <bits/stdc++.h>
using namespace std;

char charOfStep[1000005];
int depth[1000005];
int kthAncestor[1000005][21];
int curStep = 0;

void Init() {}

void TypeLetter(char L) {
	curStep++;
	charOfStep[curStep] = L;
	depth[curStep] = depth[curStep-1]+1;
	kthAncestor[curStep][0] = curStep-1;
	for(int i = 1; 1<<i <= depth[curStep]; i++)
		kthAncestor[curStep][i] = kthAncestor[kthAncestor[curStep][i-1]][i-1];
}

void UndoCommands(int U) {
	curStep++;
	charOfStep[curStep] = charOfStep[curStep-1-U];
	depth[curStep] = depth[curStep-1-U];
	kthAncestor[curStep][0] = kthAncestor[curStep-1-U][0];
	for(int i = 1; 1<<i <= depth[curStep]; i++)
		kthAncestor[curStep][i] = kthAncestor[curStep-1-U][i];
}

char GetLetter(int P) {
  int node = curStep;
  for(int i = 21; i >= 0; i--)
  	if(depth[node] - (1<<i) >= P+1)
  		node = kthAncestor[node][i];
  return charOfStep[node];
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Correct 2 ms 384 KB Output is correct
4 Correct 2 ms 384 KB Output is correct
5 Correct 2 ms 384 KB Output is correct
6 Correct 2 ms 384 KB Output is correct
7 Correct 2 ms 384 KB Output is correct
8 Correct 2 ms 384 KB Output is correct
9 Correct 2 ms 384 KB Output is correct
10 Correct 2 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Correct 2 ms 384 KB Output is correct
4 Correct 2 ms 384 KB Output is correct
5 Correct 2 ms 384 KB Output is correct
6 Correct 2 ms 384 KB Output is correct
7 Correct 2 ms 384 KB Output is correct
8 Correct 2 ms 384 KB Output is correct
9 Correct 2 ms 384 KB Output is correct
10 Correct 2 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 512 KB Output is correct
2 Correct 3 ms 640 KB Output is correct
3 Correct 3 ms 768 KB Output is correct
4 Correct 3 ms 768 KB Output is correct
5 Correct 3 ms 768 KB Output is correct
6 Correct 3 ms 740 KB Output is correct
7 Correct 3 ms 640 KB Output is correct
8 Correct 3 ms 768 KB Output is correct
9 Correct 3 ms 768 KB Output is correct
10 Correct 3 ms 768 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 513 ms 63168 KB Output is correct
2 Correct 575 ms 76864 KB Output is correct
3 Correct 389 ms 76256 KB Output is correct
4 Correct 426 ms 79972 KB Output is correct
5 Correct 507 ms 70568 KB Output is correct
6 Correct 411 ms 83220 KB Output is correct
7 Correct 556 ms 71356 KB Output is correct
8 Correct 614 ms 85316 KB Output is correct
9 Correct 632 ms 81432 KB Output is correct
10 Correct 219 ms 90692 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 804 ms 58156 KB Output is correct
2 Correct 712 ms 50052 KB Output is correct
3 Correct 387 ms 63564 KB Output is correct
4 Correct 417 ms 55132 KB Output is correct
5 Correct 464 ms 73896 KB Output is correct
6 Correct 439 ms 76532 KB Output is correct
7 Correct 473 ms 76456 KB Output is correct
8 Correct 671 ms 64340 KB Output is correct
9 Correct 798 ms 66888 KB Output is correct
10 Correct 212 ms 89512 KB Output is correct