Submission #104394

# Submission time Handle Problem Language Result Execution time Memory
104394 2019-04-06T11:36:52 Z dfistric Crayfish scrivener (IOI12_scrivener) C++14
100 / 100
862 ms 29648 KB
#include <bits/stdc++.h>

#define FOR(i, a, b) for (int i = (a); i < (b); i++)
#define FORd(i, a, b) for (int i = (a); i >= (b); i--)
#define REP(i, n) FOR(i, 0, n)

using namespace std;

struct node {
    node* par;
    node* jump;
    char c;
    int dep;

    node(node* n, node* nn, char cc) {
        par = n, jump = nn, c = cc;

        if (n) dep = n->dep + 1;
        else   dep = 0;
    }
};
node* root;

vector <node*> ve;
int flag;
string s;

void Init() {
    root = new node(NULL, NULL, '.');
    ve.push_back(root);

    return;
}

node* go_up(int x) {
    node* curr = root;

    while (curr->dep > x) {
        int d = curr->dep;
        int ne = d - (d & -d);
        if (ne >= x) curr = curr->jump;
        else         curr = curr->par;
    }

    return curr;
}

void TypeLetter(char L) {
    flag = 1;

    int x = (L - 'a');
    int nd = root->dep + 1;
    nd = nd - (nd & -nd);
    node* up = go_up(nd);
    root = new node(root, up, L);
    ve.push_back(root);

    return;
}

void UndoCommands(int U) {
    flag = 1;

    root = ve[ve.size() - 1 - U];
    ve.push_back(root);

    return;
}

char GetLetter(int P) {
    node* curr = go_up(P + 1);
    return curr->c;
}

Compilation message

scrivener.cpp: In function 'void TypeLetter(char)':
scrivener.cpp:51:9: warning: unused variable 'x' [-Wunused-variable]
     int x = (L - 'a');
         ^
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 3 ms 384 KB Output is correct
3 Correct 2 ms 256 KB Output is correct
4 Correct 3 ms 384 KB Output is correct
5 Correct 3 ms 256 KB Output is correct
6 Correct 2 ms 384 KB Output is correct
7 Correct 2 ms 384 KB Output is correct
8 Correct 3 ms 384 KB Output is correct
9 Correct 3 ms 384 KB Output is correct
10 Correct 3 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 3 ms 384 KB Output is correct
3 Correct 3 ms 384 KB Output is correct
4 Correct 3 ms 256 KB Output is correct
5 Correct 2 ms 384 KB Output is correct
6 Correct 2 ms 384 KB Output is correct
7 Correct 3 ms 384 KB Output is correct
8 Correct 2 ms 256 KB Output is correct
9 Correct 2 ms 384 KB Output is correct
10 Correct 3 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
3 Correct 3 ms 512 KB Output is correct
4 Correct 4 ms 512 KB Output is correct
5 Correct 3 ms 384 KB Output is correct
6 Correct 4 ms 512 KB Output is correct
7 Correct 16 ms 512 KB Output is correct
8 Correct 4 ms 512 KB Output is correct
9 Correct 5 ms 512 KB Output is correct
10 Correct 3 ms 512 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 352 ms 24400 KB Output is correct
2 Correct 315 ms 27204 KB Output is correct
3 Correct 247 ms 26832 KB Output is correct
4 Correct 368 ms 22876 KB Output is correct
5 Correct 627 ms 24016 KB Output is correct
6 Correct 378 ms 29648 KB Output is correct
7 Correct 829 ms 16848 KB Output is correct
8 Correct 535 ms 23376 KB Output is correct
9 Correct 431 ms 29620 KB Output is correct
10 Correct 175 ms 23964 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 561 ms 21340 KB Output is correct
2 Correct 760 ms 21908 KB Output is correct
3 Correct 336 ms 26516 KB Output is correct
4 Correct 399 ms 24148 KB Output is correct
5 Correct 279 ms 27992 KB Output is correct
6 Correct 301 ms 27096 KB Output is correct
7 Correct 427 ms 28116 KB Output is correct
8 Correct 728 ms 19564 KB Output is correct
9 Correct 862 ms 25668 KB Output is correct
10 Correct 198 ms 27764 KB Output is correct