Submission #79056

# Submission time Handle Problem Language Result Execution time Memory
79056 2018-10-11T02:02:32 Z TAMREF Crayfish scrivener (IOI12_scrivener) C++11
34 / 100
1000 ms 153652 KB
#include <bits/stdc++.h>
using namespace std;
const int mx = 1e3 + 5;
const int lg = 20;

struct node{
    node(){}
    node(int c, char x, int i) : c(c),x(x),i(i) {
        memset(p,-1,sizeof(p));
    }
    int p[lg], c;
    char x;
    int i;
    void show(){
        printf("x = %c, i = %d, c = %d\n",x,i,c);
    }
};
vector<node> N;
int n;

void Init() {
    N.reserve(mx);
}

void TypeLetter(char L) {
    //printf("Type(%c)\n",L);
    //printf("");
    N.emplace_back();
    //puts("f1");
    N[n] = node(0, L, !n ? 0 : N[n-1].i + 1);
    //puts("f2");
    node &x = N[n];
    //puts("f3");
    x.p[0] = (!n ? -1 : n-1);
    //puts("f4");
    for(int j = 1; j < lg; j++){
        //printf("j = %d\n",j);
        if(x.p[j-1] != -1) x.p[j] = N[x.p[j-1]].p[j-1];
        else break;
    }
    //puts("f5");
    x.c = n;
    //N[n].show();
    ++n;
}

void UndoCommands(int U) {
    //printf("Undo(%d)\n",U);
    N.emplace_back();
    if(U == n){
        N[n] = node(-1, 'U', -1);
        node &x = N[n];
        ++n;
        return;
    }
    node p = N[n - 1 - U];
    N[n] = node(p.c, 'U', p.i);
    node &x = N[n];
    x.p[0] = n - 1 - U;
    for(int j = 1; j < lg; j++){
        if(x.p[j-1] != -1) x.p[j] = N[x.p[j-1]].p[j-1];
    }
    //N[n].show();
    ++n;
}

char GetLetter(int P) {
    //printf("Get(%d)\n",P);
    node b = N[n-1];
    if(b.i < P) puts("BAAM!");
    for(int j = lg; j >= 0; j--){
        if(b.i == P) return N[b.c].x;
        if(b.p[j] != -1 && N[b.p[j]].i >= P) b = N[b.p[j]];
    }
    //printf("bi : %d\n",b->i);
    //puts("asdf");
    return b.i == P ? N[b.c].x : N[N[b.p[0]].c].x;
}

Compilation message

scrivener.cpp: In function 'void UndoCommands(int)':
scrivener.cpp:52:15: warning: unused variable 'x' [-Wunused-variable]
         node &x = N[n];
               ^
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 508 KB Output is correct
3 Correct 2 ms 508 KB Output is correct
4 Correct 3 ms 508 KB Output is correct
5 Correct 2 ms 508 KB Output is correct
6 Correct 2 ms 508 KB Output is correct
7 Correct 2 ms 508 KB Output is correct
8 Correct 2 ms 580 KB Output is correct
9 Correct 2 ms 580 KB Output is correct
10 Correct 3 ms 580 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 580 KB Output is correct
2 Correct 2 ms 580 KB Output is correct
3 Correct 2 ms 580 KB Output is correct
4 Correct 2 ms 580 KB Output is correct
5 Correct 2 ms 580 KB Output is correct
6 Correct 2 ms 708 KB Output is correct
7 Correct 2 ms 708 KB Output is correct
8 Correct 2 ms 708 KB Output is correct
9 Correct 2 ms 708 KB Output is correct
10 Correct 2 ms 708 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 864 KB Output is correct
2 Correct 4 ms 992 KB Output is correct
3 Correct 4 ms 1064 KB Output is correct
4 Correct 5 ms 1448 KB Output is correct
5 Correct 4 ms 1448 KB Output is correct
6 Correct 4 ms 1588 KB Output is correct
7 Correct 3 ms 1588 KB Output is correct
8 Correct 4 ms 1588 KB Output is correct
9 Correct 4 ms 1588 KB Output is correct
10 Correct 4 ms 1588 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 680 ms 93468 KB Output is correct
2 Correct 824 ms 93468 KB Output is correct
3 Correct 582 ms 96724 KB Output is correct
4 Correct 669 ms 101808 KB Output is correct
5 Correct 719 ms 107108 KB Output is correct
6 Correct 544 ms 111712 KB Output is correct
7 Execution timed out 1086 ms 116484 KB Time limit exceeded
8 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 812 ms 118284 KB Output is correct
2 Correct 960 ms 123692 KB Output is correct
3 Correct 607 ms 127424 KB Output is correct
4 Correct 635 ms 134844 KB Output is correct
5 Correct 730 ms 138388 KB Output is correct
6 Correct 749 ms 142820 KB Output is correct
7 Correct 806 ms 147272 KB Output is correct
8 Execution timed out 1090 ms 153652 KB Time limit exceeded
9 Halted 0 ms 0 KB -