Submission #574320

#TimeUsernameProblemLanguageResultExecution timeMemory
574320keta_tsimakuridzeCrayfish scrivener (IOI12_scrivener)C++14
0 / 100
382 ms76784 KiB
#include<bits/stdc++.h> #define prev Prev using namespace std; const int N = 1000005; int id, c[N][25], prev[N], len[N]; vector<char> s; void Init() { s.push_back('0'); } void TypeLetter(char L) { id++; c[id][0] = id; s.push_back(L); len[id] = len[id - 1] + 1; prev[id] = c[id - 1][0]; for(int i = 1; i < 20; i++) { if(id < (1 << i)) break; c[id][i] = c[prev[c[id][i - 1]]][i - 1]; } } void UndoCommands(int U) { ++id; s.push_back('0'); int x = id - U - 1; len[id] = len[x]; for(int i = 0; i < 20; i++) c[id][i] = c[x][i]; } char GetLetter(int P) { int x = c[id][0]; P = len[id] - P; for(int i = 20 - 1; i >= 0; i--) { if((1 << i) < P) x = prev[c[id][i]], P -= 1 << i; } return s[c[id][0]]; } /* int main() { Init(); int cmd_num; int tmp = scanf("%d", &cmd_num); assert(tmp == 1); int i; for (i = 0; i < cmd_num; i++) { char cmd; tmp = scanf(" %c", &cmd); assert(tmp == 1); if (cmd == 'T') { char letter; tmp = scanf(" %c", &letter); assert(tmp == 1); TypeLetter(letter); } else if (cmd == 'U') { int number; tmp = scanf("%d", &number); assert(tmp == 1); UndoCommands(number); } else if (cmd == 'P') { int index; char letter; tmp = scanf("%d", &index); assert(tmp == 1); letter = GetLetter(index); printf("%c\n", letter); } } puts("Let's test for cheating!!"); return 0; } */

Compilation message (stderr)

scrivener.cpp: In function 'char GetLetter(int)':
scrivener.cpp:28:6: warning: variable 'x' set but not used [-Wunused-but-set-variable]
   28 |  int x = c[id][0];
      |      ^
#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...