Submission #169307

# Submission time Handle Problem Language Result Execution time Memory
169307 2019-12-19T16:08:00 Z AlexLuchianov Crayfish scrivener (IOI12_scrivener) C++14
60 / 100
1000 ms 83192 KB
#include <iostream>

int const nmax = 1000000;

using ll = long long;
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
#define MAX(a, b) (((a) < (b)) ? (b) : (a))

char last;

int far[20][1 + nmax], ptr = 0;
int level[1 + nmax];
char chr[1 + nmax];

void Init() {}

void TypeLetter(char L) {
  ++ptr;
  far[0][ptr] = ptr - 1;
  for(int h = 1; h < 20; h++)
    far[h][ptr] = far[h - 1][far[h - 1][ptr]];
  level[ptr] = level[far[0][ptr]] + 1;
  chr[ptr] = L;
}

void UndoCommands(int U) {
  ++ptr;
  far[0][ptr] = ptr - 1 - U;
  for(int h = 1; h < 20; h++)
    far[h][ptr] = far[h - 1][far[h - 1][ptr]];
  level[ptr] = level[far[0][ptr]];
}

char GetLetter(int P) {
  int pos = ptr;
  P++;
  for(int h = 19; 0 <= h; h--)
    if(P <= level[far[h][pos]] )
      pos = far[h][pos];
  return chr[pos];
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 504 KB Output is correct
2 Correct 2 ms 504 KB Output is correct
3 Correct 2 ms 504 KB Output is correct
4 Correct 2 ms 504 KB Output is correct
5 Correct 2 ms 504 KB Output is correct
6 Correct 2 ms 504 KB Output is correct
7 Correct 2 ms 376 KB Output is correct
8 Correct 2 ms 504 KB Output is correct
9 Correct 2 ms 504 KB Output is correct
10 Correct 2 ms 504 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 504 KB Output is correct
2 Correct 2 ms 504 KB Output is correct
3 Correct 2 ms 504 KB Output is correct
4 Correct 2 ms 504 KB Output is correct
5 Correct 2 ms 504 KB Output is correct
6 Correct 2 ms 504 KB Output is correct
7 Correct 2 ms 504 KB Output is correct
8 Correct 2 ms 504 KB Output is correct
9 Correct 2 ms 504 KB Output is correct
10 Correct 2 ms 504 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 632 KB Output is correct
2 Correct 3 ms 760 KB Output is correct
3 Correct 3 ms 892 KB Output is correct
4 Correct 3 ms 888 KB Output is correct
5 Correct 3 ms 760 KB Output is correct
6 Correct 3 ms 888 KB Output is correct
7 Correct 3 ms 888 KB Output is correct
8 Correct 3 ms 888 KB Output is correct
9 Correct 3 ms 888 KB Output is correct
10 Correct 3 ms 888 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 408 ms 60208 KB Output is correct
2 Correct 431 ms 73180 KB Output is correct
3 Correct 395 ms 72696 KB Output is correct
4 Correct 473 ms 76108 KB Output is correct
5 Correct 559 ms 67288 KB Output is correct
6 Correct 362 ms 79352 KB Output is correct
7 Correct 996 ms 68108 KB Output is correct
8 Correct 810 ms 76972 KB Output is correct
9 Correct 488 ms 74044 KB Output is correct
10 Correct 283 ms 83192 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 686 ms 55224 KB Output is correct
2 Correct 785 ms 47860 KB Output is correct
3 Correct 436 ms 60536 KB Output is correct
4 Correct 494 ms 52572 KB Output is correct
5 Correct 400 ms 70492 KB Output is correct
6 Correct 428 ms 72928 KB Output is correct
7 Correct 458 ms 72880 KB Output is correct
8 Execution timed out 1088 ms 59656 KB Time limit exceeded
9 Halted 0 ms 0 KB -