Submission #56895

# Submission time Handle Problem Language Result Execution time Memory
56895 2018-07-13T05:53:45 Z 김세빈(#1635) None (JOI15_memory) C++11
100 / 100
3628 ms 276988 KB
#include "Memory_lib.h"

int Memory(int N, int M)
{
	auto make = [&](int s, int p, int d, int x, int y){
		return s * 40804 + p * 404 + d * 4 + x * 2 + y;
	};
	
	int s, p, d, x, y;
	char ch;
	
	s = M / 40804;
	p = M / 404 % 101;
	d = M / 4 % 101;
	x = M / 2 % 2;
	y = M % 2;
	
	if(s > N || p > N || d > N) return -2;
	
	if(x){
		if(p < N){
			if(s <= 0 || p <= 0) return -2;
			
			ch = Get(p);
			
			if(ch == '<' || ch == '['){
				if(d == 1){
					if(ch == '<' && y) return -2;
					else if(ch == '[' && !y) return -2;
					else return make(s-1, N, 0, 1, 0);
				}
				else return make(s, p-1, d-1, 1, y);
			}
			else{
				return make(s, p-1, d+1, 1, y);
			}
		}
		else{
			if(s <= 0) return -1;
			
			ch = Get(s);
			
			if(ch == '<' || ch == '[') return make(s-1, N, 0, 1, 0);
			else{
				if(ch == '>') return make(s, s-1, 1, 1, 0);
				else return make(s, s-1, 1, 1, 1);
			}
		}
	}
	else{
		if(p){
			if(s >= N || p >= N) return -2;
			
			ch = Get(p + 1);
			
			if(ch == '>' || ch == ']'){
				if(d == 1){
					if(ch == '>' && y) return -2;
					else if(ch == ']' && !y) return -2;
					else return make(s+1, 0, 0, 0, 0);
				}
				else return make(s, p+1, d-1, 0, y);
			}
			else{
				return make(s, p+1, d+1, 0, y);
			}
		}
		else{
			if(s >= N) return make(N, N, 0, 1, 0);
			
			ch = Get(s + 1);
			
			if(ch == '>' || ch == ']') return make(s+1, 0, 0, 0, 0);
			else{
				if(ch == '<') return make(s, s+1, 1, 0, 0);
				else return make(s, s+1, 1, 0, 1);
			}
		}
	}
}
# Verdict Execution time Memory Grader output
1 Correct 2758 ms 276588 KB Output is correct
2 Correct 3628 ms 276788 KB Output is correct
3 Correct 2741 ms 276788 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2758 ms 276588 KB Output is correct
2 Correct 3628 ms 276788 KB Output is correct
3 Correct 2741 ms 276788 KB Output is correct
4 Correct 3450 ms 276792 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2758 ms 276588 KB Output is correct
2 Correct 3628 ms 276788 KB Output is correct
3 Correct 2741 ms 276788 KB Output is correct
4 Correct 3450 ms 276792 KB Output is correct
5 Correct 3104 ms 276820 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2758 ms 276588 KB Output is correct
2 Correct 3628 ms 276788 KB Output is correct
3 Correct 2741 ms 276788 KB Output is correct
4 Correct 3450 ms 276792 KB Output is correct
5 Correct 3104 ms 276820 KB Output is correct
6 Correct 2971 ms 276988 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2952 ms 276988 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2758 ms 276588 KB Output is correct
2 Correct 3628 ms 276788 KB Output is correct
3 Correct 2741 ms 276788 KB Output is correct
4 Correct 3450 ms 276792 KB Output is correct
5 Correct 3104 ms 276820 KB Output is correct
6 Correct 2971 ms 276988 KB Output is correct
7 Correct 2952 ms 276988 KB Output is correct
8 Correct 3218 ms 276988 KB Output is correct
9 Correct 3237 ms 276988 KB Output is correct