Submission #195647

# Submission time Handle Problem Language Result Execution time Memory
195647 2020-01-16T17:19:05 Z c4ts0up Crayfish scrivener (IOI12_scrivener) C++17
12 / 100
1000 ms 223584 KB
#include <bits/stdc++.h>
#define pb push_back
using namespace std;

struct Instruction {
	char type;
	char p, x;

	Instruction() {};
	Instruction (char c, char previous, char current_val) {
		type = c;
		p = previous;
		x = current_val;
	}
};

int iab;
int idx;
int kons;
vector <char> curr;
vector <vector <Instruction > > Ins;

void UpIAB() {
    iab++;
}

void Init() {
	curr.resize(1e6+5);
	for (int i=0; i<1e6+5; i++) curr[i] = '#';
	Ins.resize(1e6+5);
	iab = -1;
	idx = -1;
	kons = 0;
}

void TypeLetter(char L) {
	idx++;
	char prev = curr[idx];
	curr[idx] = L;

	UpIAB();
//	cout << "Instruction of type " << 'T' << endl;
//	cout << "Previous value of " << prev << endl;
//	cout << "New value of " << L << endl;
	Ins[iab].pb(Instruction('T', prev, L));
//	cout << Ins[iab][0].type << " - " << Ins[iab][0].p << " - " << Ins[iab][0].x << endl;
	kons++;
	//cout << "ADDED: T " << prev << " " << L << endl;
}

void ReType(Instruction it) {
	curr[idx] = it.p;
	idx--;

	UpIAB();
	Ins[iab].pb(Instruction('R', it.x, it.p));
	kons++;
	//cout << "ADDED: R " << it.x << " " << it.p << endl;
}

void UndoCommands(int u) {
	UpIAB();
//	cout << "iab tiene valor de " << iab << endl;
	for (int i=0; i<u; i++) {
//	    cout << "kons = " << kons << endl;
//	    cout << "i = " << i << endl;
//	    cout << "Revisando la bucket con indice " << kons-1-i << endl;
		for (int j = Ins[kons-1-i].size()-1; j>-1 ; j--) {
            Instruction it = Ins[kons-1-i][j];
//		    cout << "INIT: " << it.type << " - " << it.p << " - " << it.x << endl;
            if (it.type == 'T') {
                // ReType

                curr[idx] = it.p;
                idx--;

                Ins[iab].pb(Instruction('R', it.x, it.p));
                continue;
            }
            else {
                // Type

                idx++;
                char prev = curr[idx];
                curr[idx] = it.p;

                Ins[iab].pb(Instruction('T', prev, curr[idx]));
                continue;
            }
		}
	}

	kons++;
}

char GetLetter(int P) {
	return curr[P];
}
# Verdict Execution time Memory Grader output
1 Correct 29 ms 24796 KB Output is correct
2 Correct 34 ms 24824 KB Output is correct
3 Correct 30 ms 24868 KB Output is correct
4 Correct 28 ms 24816 KB Output is correct
5 Correct 29 ms 24824 KB Output is correct
6 Correct 30 ms 24824 KB Output is correct
7 Correct 27 ms 24824 KB Output is correct
8 Correct 34 ms 24824 KB Output is correct
9 Correct 28 ms 24824 KB Output is correct
10 Correct 28 ms 24824 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 29 ms 24880 KB Output is correct
2 Correct 31 ms 24880 KB Output is correct
3 Correct 29 ms 24844 KB Output is correct
4 Correct 29 ms 24824 KB Output is correct
5 Correct 34 ms 24824 KB Output is correct
6 Correct 21 ms 24824 KB Output is correct
7 Correct 29 ms 24824 KB Output is correct
8 Correct 27 ms 24952 KB Output is correct
9 Correct 28 ms 24696 KB Output is correct
10 Correct 26 ms 24824 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 1097 ms 223584 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1020 ms 201068 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1051 ms 199996 KB Time limit exceeded
2 Halted 0 ms 0 KB -