제출 #1136890

#제출 시각아이디문제언어결과실행 시간메모리
1136890mnbvcxz123비교 (balkan11_cmp)C++20
100 / 100
986 ms96156 KiB
#include "cmp.h"

int delta[6]{1, 4097, 5121, 5377, 5441, 5457};

void remember(int n) {
	for (int i = 0; i < 6; i++) bit_set((n >> i * 2) + delta[i]);
}

int compare(int b) {
	int l = 0, r = 6;
	while (l != r) {
		int mid = (l + r) / 2;
		if (bit_get((b >> mid * 2) + delta[mid])) r = mid;
		else l = mid + 1;
	}

	if (!l) return 0;
	int last_digit = (b >> l * 2 - 2) & 3;
	if (last_digit > 1) {
		if (bit_get((((b >> l * 2) << 2) + 3) + delta[l - 1])) return -1;
		return 1;
	} else {
		if (bit_get(((b >> l * 2) << 2) + delta[l - 1])) return 1;
		return -1;
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...