답안 #848972

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
848972 2023-09-13T19:02:28 Z abcvuitunggio 비교 (balkan11_cmp) C++17
100 / 100
1139 ms 106476 KB
#include "cmp.h"

int num[4]={0,8,72,584};

void remember(int n){
    for (int i=0;i<4;i++)
        bit_set((n>>(i*3))+num[3-i]+1);
}

int compare(int b) {
    int l=0,r=3,kq=0;
    while (l<=r){
        int mid=(l+r)>>1;
        if (bit_get((b>>(9-mid*3))+num[mid]+1))
            l=kq=mid+1;
        else
            r=mid-1;
    }
    if (kq==4)
        return 0;
    b>>=(9-kq*3);
    if (b%8<4){
        for (int i=0;i<b%8;i++)
            if (bit_get(b/8*8+i+num[kq]+1))
                return 1;
        return -1;
    }
    for (int i=b%8+1;i<8;i++)
        if (bit_get(b/8*8+i+num[kq]+1))
            return -1;
    return 1;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1139 ms 106476 KB Output is correct - maxAccess = 10, score = 100