답안 #73518

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
73518 2018-08-28T11:23:59 Z ics0503 기억 압축 (JOI15_memory) C++17
100 / 100
3224 ms 276952 KB
#include "Memory_lib.h"
#include<stdio.h>
int Memory(int N, int M) {
	if (M > 3000000)
		return -2;
	if (M < 10000) {
		int now = M / 100 + 1;
		int dep = M % 100;
		if (now > N)return -2;
		char want = Get(now);
		dep += (want == '[' || want == '<') * 2 - 1;
		if (dep < 0 || (now == N && dep != 0))return -2;
		if (now == N)
			return 10000;
		return now * 100 + dep;
	}
	if (M < 20000) {
		int m = M - 10000;
		int now = M-10000 + 1;
		if (now > N)return -2;
		char want = Get(now);
		if (want == '[' || want == '<') {
			return 20000 + (want == '[')*1000000+(now*10000)+(now*100)+1;//go check
		}
		if (now == N)return -1;
		return 10000 + now;
	}
	int m = M - 20000;
	int ck = m / 1000000;
	int nxt = m / 10000 % 100;
	int now = m / 100 % 100;
	int dep = m % 100;
	if (now + 1 > N)return -2;
	char get = Get(now + 1);
	if (get == '[' || get == '<') {
		dep++;
		return 20000 + ck * 1000000 + nxt * 10000 + (now + 1) * 100 + dep;
	}
	dep--;
	if (dep == 0) {
		if (!ck) {
			if (get == ']')return -2;
			return 10000 + nxt;
		}
		else{
			if (get == '>')return -2;
			return 10000 + nxt;
		}
	}
	return 20000 + ck * 1000000 + nxt * 10000 + (now + 1) * 100 + dep;
}

Compilation message

memory.cpp: In function 'int Memory(int, int)':
memory.cpp:18:7: warning: unused variable 'm' [-Wunused-variable]
   int m = M - 10000;
       ^
# 결과 실행 시간 메모리 Grader output
1 Correct 3128 ms 276592 KB Output is correct
2 Correct 3124 ms 276848 KB Output is correct
3 Correct 3041 ms 276940 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3128 ms 276592 KB Output is correct
2 Correct 3124 ms 276848 KB Output is correct
3 Correct 3041 ms 276940 KB Output is correct
4 Correct 2975 ms 276940 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3128 ms 276592 KB Output is correct
2 Correct 3124 ms 276848 KB Output is correct
3 Correct 3041 ms 276940 KB Output is correct
4 Correct 2975 ms 276940 KB Output is correct
5 Correct 3146 ms 276940 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3128 ms 276592 KB Output is correct
2 Correct 3124 ms 276848 KB Output is correct
3 Correct 3041 ms 276940 KB Output is correct
4 Correct 2975 ms 276940 KB Output is correct
5 Correct 3146 ms 276940 KB Output is correct
6 Correct 2801 ms 276940 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3224 ms 276940 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3128 ms 276592 KB Output is correct
2 Correct 3124 ms 276848 KB Output is correct
3 Correct 3041 ms 276940 KB Output is correct
4 Correct 2975 ms 276940 KB Output is correct
5 Correct 3146 ms 276940 KB Output is correct
6 Correct 2801 ms 276940 KB Output is correct
7 Correct 3224 ms 276940 KB Output is correct
8 Correct 2838 ms 276940 KB Output is correct
9 Correct 3119 ms 276952 KB Output is correct