Submission #106337

# Submission time Handle Problem Language Result Execution time Memory
106337 2019-04-17T23:33:58 Z Lawliet Crayfish scrivener (IOI12_scrivener) C++14
12 / 100
723 ms 66040 KB
#include <bits/stdc++.h>

#define LOG 22
#define MAX 1000010

using namespace std;

class pilha
{
	public:
		
		void add(char s)
		{
			curInd++;
			curNode++;
			
			v[curNode] = s;
			version[curInd] = curNode;
			dp[curNode][0] = version[curInd - 1];
			prof[curNode] = prof[dp[curNode][0]] + 1;
			
			for(int k = 1 ; k < LOG ; k++)
				dp[curNode][k]= dp[dp[curNode][k - 1]][k - 1];
		}
		
		void back(int k)
		{
			curInd++;
			
			version[curInd] = version[curInd - k - 1];
		}
		
		char query(int k)
		{
			int d = prof[curNode] - k;
			int cur = curNode;
			
			for(int g = 0 ; g < LOG ; g++)
				if(d & (1 << g))
					cur = dp[cur][g];
					
			return v[cur];
		}
		
	private:
		
		int curInd;
		int curNode;
		
		int prof[MAX];
		int dp[MAX][LOG];
		int version[MAX];
		
		char v[MAX];
};

pilha p;

void Init() { }

void TypeLetter(char L) { p.add( L ); }

void UndoCommands(int U) { p.back( U ); }

char GetLetter(int P) { return p.query( P + 1 ); }

/*int q;
int n1, n2;

int main()
{
	scanf("%d",&q);
	
	Init();
	
	for(int g = 0 ; g < q ; g++)
	{
		scanf("%d %d",&n1,&n2);
		
		if(n1 == 1) TypeLetter(n2 + 'a');
		if(n1 == 2) UndoCommands(n2);
		if(n1 == 3) printf("%c\n",GetLetter(n2));
	}
}*/
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 3 ms 384 KB Output is correct
3 Correct 3 ms 384 KB Output is correct
4 Correct 4 ms 384 KB Output is correct
5 Correct 3 ms 384 KB Output is correct
6 Correct 3 ms 384 KB Output is correct
7 Correct 2 ms 384 KB Output is correct
8 Correct 2 ms 384 KB Output is correct
9 Correct 2 ms 384 KB Output is correct
10 Correct 2 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Correct 2 ms 384 KB Output is correct
4 Correct 2 ms 384 KB Output is correct
5 Correct 2 ms 384 KB Output is correct
6 Correct 3 ms 384 KB Output is correct
7 Correct 2 ms 384 KB Output is correct
8 Correct 3 ms 384 KB Output is correct
9 Correct 2 ms 384 KB Output is correct
10 Correct 2 ms 412 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 3 ms 512 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 723 ms 56168 KB Output is correct
2 Correct 716 ms 66040 KB Output is correct
3 Correct 473 ms 65396 KB Output is correct
4 Incorrect 413 ms 54364 KB Output isn't correct
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 648 ms 48016 KB Output isn't correct
2 Halted 0 ms 0 KB -