답안 #44100

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
44100 2018-03-29T23:26:58 Z dhkim0225 비교 (balkan11_cmp) C++14
100 / 100
2460 ms 94328 KB
#include "cmp.h"

int bases[4] = { 12, 10, 8, 6 };

void remember(int n) {
	for (int i = 4; i >= 1; i--) {
		int base = bases[i - 1];
		if (n >= base) {
			int r = n % base;
			n /= base;
			bit_set(i * 1000 + r);
		}
		else if (n == 0) 
			bit_set(i * 1000);
		else {
			bit_set(i * 1000 + n);
			n = 0;
		}
	}
}

int compare(int b) {
	int converted[5] = { 0, };
	for (int i = 4; i >= 1; i--) {
		int base = bases[i - 1];
		if (b >= base) {
			converted[i] = (b % base);
			b /= base;
		}
		else {
			converted[i] = b;
			break;
		}
	}
	for (int i = 1; i <= 4; i++) {
		int base = bases[i - 1];

		if (bit_get(1000 * i + converted[i]))
			continue;
		else {
			if (converted[i] >= base/2) {
				for (int j = converted[i] + 1; j < base; j++) {
					if (bit_get(1000 * i + j))
						return -1;
				}
				return 1;
			}
			else {
				for (int j = converted[i] - 1; j >= 0; j--) {
					if (bit_get(1000 * i + j))
						return 1;
				}
				return -1;
			}
		}
	}
	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 2460 ms 94328 KB Output is correct - maxAccess = 10, score = 100