Submission #70924

# Submission time Handle Problem Language Result Execution time Memory
70924 2018-08-23T17:35:38 Z FLDutchman Crayfish scrivener (IOI12_scrivener) C++14
34 / 100
1000 ms 131400 KB
#include <bits/stdc++.h>
using namespace std;

#define pb push_back
#define fast_io() ios::sync_with_stdio(false)
#define FOR(i, l, r) for(int i = (l); i < (r); i++)

struct llist{
    vector<llist*> lift;
    char c;
    int sz = 1;
    llist (char c) : c(c){}
};

int getsz(llist *l) {
    if(!l) return 0;
    return l->sz;
}

llist *insert(llist* l, char c){
    llist *nl = new llist(c);
    nl->sz = getsz(l)+1;
    if(!l) return nl;
    //cerr<<getsz(l) << " " << l->lift.size() << endl;
    int i = 0;
    while(true){
        //cout<<getsz(l)<<endl;
        nl->lift.pb(l);
        //cout<<nl->lift.size()<<endl;
        if(l->lift.size() <= i) return nl;
        l = l->lift[i++];
    }    
    return nl;
}

char getletter(llist *l, int i){
    //cerr<<getsz(l) << " " << l->lift.size() << endl;
    FOR(k, 0, 21) if(i & (1<<k)) l = l->lift[k]; 
    return l->c;
}

vector <llist*> v;

void Init() {
    v.pb(0);
}

void TypeLetter(char L) {
    //for(auto l : v) cout << getsz(l) << " " << (l ?  to_string(l->lift.size()) :"") << endl;
    v.pb(insert(v.back(), L));
}

void UndoCommands(int U) {
    v.pb(v[v.size()-1-U]);
}

char GetLetter(int P) {
    auto l = v.back();
    return getletter(l, getsz(l)-1 - P);
}

Compilation message

scrivener.cpp: In function 'llist* insert(llist*, char)':
scrivener.cpp:30:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if(l->lift.size() <= i) return nl;
            ~~~~~~~~~~~~~~~^~~~
# Verdict Execution time Memory Grader output
1 Correct 2 ms 248 KB Output is correct
2 Correct 2 ms 356 KB Output is correct
3 Correct 3 ms 396 KB Output is correct
4 Correct 3 ms 612 KB Output is correct
5 Correct 2 ms 612 KB Output is correct
6 Correct 3 ms 612 KB Output is correct
7 Correct 2 ms 612 KB Output is correct
8 Correct 4 ms 612 KB Output is correct
9 Correct 2 ms 612 KB Output is correct
10 Correct 2 ms 612 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 612 KB Output is correct
2 Correct 2 ms 612 KB Output is correct
3 Correct 2 ms 612 KB Output is correct
4 Correct 2 ms 620 KB Output is correct
5 Correct 3 ms 624 KB Output is correct
6 Correct 2 ms 624 KB Output is correct
7 Correct 3 ms 624 KB Output is correct
8 Correct 2 ms 636 KB Output is correct
9 Correct 3 ms 812 KB Output is correct
10 Correct 3 ms 812 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 836 KB Output is correct
2 Correct 4 ms 964 KB Output is correct
3 Correct 7 ms 988 KB Output is correct
4 Correct 6 ms 1160 KB Output is correct
5 Correct 6 ms 1160 KB Output is correct
6 Correct 7 ms 1452 KB Output is correct
7 Correct 6 ms 1452 KB Output is correct
8 Correct 7 ms 1452 KB Output is correct
9 Correct 5 ms 1452 KB Output is correct
10 Correct 5 ms 1452 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 1086 ms 131400 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1092 ms 131400 KB Time limit exceeded
2 Halted 0 ms 0 KB -