Submission #126221

# Submission time Handle Problem Language Result Execution time Memory
126221 2019-07-07T09:26:26 Z groeneprof Crayfish scrivener (IOI12_scrivener) C++14
60 / 100
1000 ms 148936 KB
#include <bits/stdc++.h>
#define P(x) do {if(debug) cout << x << endl;} while(false)
#define H(x) P(#x << ": " << x)
#define FR(i, a, b) for(int i = (a); i < (b); ++i)
#define F(i, n) FR(i, 0, n)
using namespace std;
const bool debug = 0;
const int inf = 1e9;
int N = 1000005;
vector<int> ind;
vector<char> parent;
vector<int> depth;
vector<vector<int> > memo;
int cur;

int root(int a){
	if(a==ind[a]){
		return a;
	}
	return ind[a] = root(ind[a]);
}

void print(){
	if(debug){
		cout<<"ind: ";
		F(i, cur+1) cout<<ind[i]<<" ";
		cout<<"\nparent: ";
		F(i, cur+1) cout<<parent[i]<<" ";
		cout<<"\ndepth: ";
		F(i, cur+1) cout<<depth[i]<<" ";
		cout<<"\nmemo: ";
		F(i, cur+1) cout<<memo[i][0]<<" ";

	}
}

int f(int i, int h){
	if(memo[i][h]!=-1){
		return memo[i][h];
	}
	return memo[i][h] = f(f(i,h-1) , h-1);
}

void Init() {
	ind = {0};
	parent = {'\\'};
	depth = {0};
	P("I");
	memo.resize(N, vector<int> (23, -1));
	memo[0][0] = 0;
	P("II");
	cur = 0;
}

void TypeLetter(char L) {
	H(L);
	int n = cur+1;
	ind.push_back(n);
	parent.push_back(L);
	memo[n][0] = root(cur);
	depth.push_back(depth[root(cur)]+1);
	//cout<<endl;
	cur = n;
}

void UndoCommands(int U) {
	H(U);
	ind.push_back(cur-U);
	parent.push_back('/');
	depth.push_back(-1);
	cur = cur+1;
}

char GetLetter(int P) {
	H(P);
	print();
	int res = root(cur);
	for(int h = 22; h>=0; h--){
		if(depth[root(f(res, h))]>P) res = f(res, h);
	}
	return parent[res];
}
# Verdict Execution time Memory Grader output
1 Correct 198 ms 133368 KB Output is correct
2 Correct 200 ms 133496 KB Output is correct
3 Correct 183 ms 133384 KB Output is correct
4 Correct 189 ms 133368 KB Output is correct
5 Correct 199 ms 133364 KB Output is correct
6 Correct 206 ms 133400 KB Output is correct
7 Correct 181 ms 133368 KB Output is correct
8 Correct 182 ms 133548 KB Output is correct
9 Correct 182 ms 133408 KB Output is correct
10 Correct 205 ms 133456 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 163 ms 133360 KB Output is correct
2 Correct 192 ms 133460 KB Output is correct
3 Correct 183 ms 133368 KB Output is correct
4 Correct 181 ms 133400 KB Output is correct
5 Correct 180 ms 133404 KB Output is correct
6 Correct 193 ms 133372 KB Output is correct
7 Correct 179 ms 133368 KB Output is correct
8 Correct 201 ms 133396 KB Output is correct
9 Correct 228 ms 133588 KB Output is correct
10 Correct 189 ms 133468 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 187 ms 133444 KB Output is correct
2 Correct 184 ms 133496 KB Output is correct
3 Correct 189 ms 133496 KB Output is correct
4 Correct 183 ms 133576 KB Output is correct
5 Correct 184 ms 133496 KB Output is correct
6 Correct 183 ms 133624 KB Output is correct
7 Correct 184 ms 133624 KB Output is correct
8 Correct 202 ms 133496 KB Output is correct
9 Correct 188 ms 133612 KB Output is correct
10 Correct 182 ms 133660 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 486 ms 141384 KB Output is correct
2 Correct 453 ms 146292 KB Output is correct
3 Correct 415 ms 147020 KB Output is correct
4 Correct 506 ms 148936 KB Output is correct
5 Correct 704 ms 146632 KB Output is correct
6 Correct 511 ms 147020 KB Output is correct
7 Correct 742 ms 147828 KB Output is correct
8 Correct 574 ms 147884 KB Output is correct
9 Correct 528 ms 146764 KB Output is correct
10 Correct 402 ms 147260 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 1088 ms 141520 KB Time limit exceeded
2 Halted 0 ms 0 KB -