Submission #95557

# Submission time Handle Problem Language Result Execution time Memory
95557 2019-02-02T05:12:06 Z oolimry Crayfish scrivener (IOI12_scrivener) C++14
100 / 100
636 ms 72820 KB
#include <bits/stdc++.h>
int p[1000005][22];
char character[1000005];
int point[1000005];
int depth[1000005];
int x = 0;
int cur = 0;
int mcur = 0;
void Init() {
    for(int i = 0;i < 22;i++)
        p[0][i] = -1;
    depth[0] = 0;
}
void TypeLetter(char L) {
    int next = mcur + 1;
    point[x] = next;
    character[next] = L;
    depth[next] = depth[cur] + 1;
    p[next][0] = cur;
    for(int i = 1;i < 22;i++){
        if(p[next][i-1] != -1) p[next][i] = p[p[next][i-1]][i-1];
        else {p[next][i] = -1; continue;}
    }
    cur = next;
    mcur++;
    x++;
}
void UndoCommands(int U) {
    cur  = point[x - U - 1];
    point[x] = cur;
    x++;
}
char GetLetter(int P) {
    int k = depth[cur] - P - 1;
    int node = cur;
    while(k > 0){
        int kk = (k & (-k));
        k -= kk;
        kk = log2(kk);
        node = p[node][kk];
    }
    return character[node];
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Correct 2 ms 376 KB Output is correct
8 Correct 2 ms 376 KB Output is correct
9 Correct 2 ms 292 KB Output is correct
10 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Correct 2 ms 376 KB Output is correct
8 Correct 2 ms 376 KB Output is correct
9 Correct 2 ms 376 KB Output is correct
10 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 504 KB Output is correct
2 Correct 3 ms 504 KB Output is correct
3 Correct 3 ms 604 KB Output is correct
4 Correct 3 ms 632 KB Output is correct
5 Correct 3 ms 504 KB Output is correct
6 Correct 4 ms 760 KB Output is correct
7 Correct 3 ms 760 KB Output is correct
8 Correct 3 ms 632 KB Output is correct
9 Correct 3 ms 632 KB Output is correct
10 Correct 3 ms 504 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 421 ms 59768 KB Output is correct
2 Correct 575 ms 66024 KB Output is correct
3 Correct 344 ms 65400 KB Output is correct
4 Correct 310 ms 54264 KB Output is correct
5 Correct 456 ms 57464 KB Output is correct
6 Correct 313 ms 71288 KB Output is correct
7 Correct 331 ms 38264 KB Output is correct
8 Correct 325 ms 54452 KB Output is correct
9 Correct 530 ms 72820 KB Output is correct
10 Correct 180 ms 54012 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 565 ms 52208 KB Output is correct
2 Correct 499 ms 47452 KB Output is correct
3 Correct 391 ms 51704 KB Output is correct
4 Correct 330 ms 41024 KB Output is correct
5 Correct 363 ms 55416 KB Output is correct
6 Correct 400 ms 52344 KB Output is correct
7 Correct 392 ms 55624 KB Output is correct
8 Correct 636 ms 30072 KB Output is correct
9 Correct 536 ms 49016 KB Output is correct
10 Correct 178 ms 53624 KB Output is correct