Submission #118531

# Submission time Handle Problem Language Result Execution time Memory
118531 2019-06-19T07:38:25 Z Plurm Crayfish scrivener (IOI12_scrivener) C++11
34 / 100
550 ms 116464 KB
#include <bits/stdc++.h>
using namespace std;
const int MXN = 1 << 20;
const int COEFF = 12;
char mem[COEFF*MXN];
int llink[COEFF*MXN];
int rlink[COEFF*MXN];
int root;
int nodesz;
vector<int> rootlist;
vector<int> lens;
int newnode(int o = -1){
    int c = ++nodesz;
    if(o != -1){
        llink[c] = llink[o];
        rlink[c] = rlink[o];
        mem[c] = mem[o];
    }
    return c;
}
int build(int l, int r){
    int c = newnode();
    if(l == r) return c;
    int k = (l+r)/2;
    llink[c] = build(l,k);
    rlink[c] = build(k+1,r);
    return c;
}
int update(int o, int idx, char upd, int lb, int rb){
    int c = newnode(o);
    if(lb == rb){
        mem[c] = upd;
        return c;
    }
    int k = (lb + rb)/2;
    if(idx <= k){
        llink[c] = update(llink[c], idx, upd, lb, k);
    }else{
        rlink[c] = update(rlink[c], idx, upd, k+1, rb);
    }
    return c;
}
char query(int c, int idx, int lb, int rb){
    if(lb == rb) return mem[c];
    int k = (lb + rb)/2;
    if(idx <= k) return query(llink[c], idx, lb, k);
    else return query(rlink[c], idx, k+1, rb);
}
void Init() {
    root = build(0, MXN-1);
    rootlist.push_back(root);
    lens.push_back(0);
}
void TypeLetter(char L) {
    int l = lens.back();
    int o = rootlist.back();
    int c = update(o, l, L, 0, MXN-1);
    rootlist.push_back(c);
    lens.push_back(l+1);
}
void UndoCommands(int U) {
    int vn = rootlist.size() - 1 - U;
    lens.push_back(lens[vn]);
    rootlist.push_back(rootlist[vn]);
}
char GetLetter(int P) {
    return query(rootlist.back(), P, 0, MXN-1);
}
# Verdict Execution time Memory Grader output
1 Correct 20 ms 16896 KB Output is correct
2 Correct 20 ms 16768 KB Output is correct
3 Correct 20 ms 16768 KB Output is correct
4 Correct 21 ms 16768 KB Output is correct
5 Correct 36 ms 16760 KB Output is correct
6 Correct 21 ms 16768 KB Output is correct
7 Correct 20 ms 16728 KB Output is correct
8 Correct 21 ms 16896 KB Output is correct
9 Correct 20 ms 16812 KB Output is correct
10 Correct 20 ms 16768 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 20 ms 16760 KB Output is correct
2 Correct 43 ms 16732 KB Output is correct
3 Correct 21 ms 16764 KB Output is correct
4 Correct 20 ms 16768 KB Output is correct
5 Correct 19 ms 16768 KB Output is correct
6 Correct 19 ms 16768 KB Output is correct
7 Correct 21 ms 16764 KB Output is correct
8 Correct 19 ms 16768 KB Output is correct
9 Correct 20 ms 16760 KB Output is correct
10 Correct 20 ms 16768 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 21 ms 16988 KB Output is correct
2 Correct 22 ms 17144 KB Output is correct
3 Correct 29 ms 17144 KB Output is correct
4 Correct 22 ms 17400 KB Output is correct
5 Correct 23 ms 17144 KB Output is correct
6 Correct 22 ms 17536 KB Output is correct
7 Correct 22 ms 17536 KB Output is correct
8 Correct 22 ms 17408 KB Output is correct
9 Correct 21 ms 17428 KB Output is correct
10 Correct 21 ms 17144 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 241 ms 114208 KB Time limit exceeded (wall clock)
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 459 ms 112984 KB Output is correct
2 Correct 550 ms 101336 KB Output is correct
3 Correct 416 ms 110300 KB Output is correct
4 Correct 447 ms 85564 KB Output is correct
5 Execution timed out 315 ms 116464 KB Time limit exceeded (wall clock)
6 Halted 0 ms 0 KB -