Submission #26864

#TimeUsernameProblemLanguageResultExecution timeMemory
26864grandscmp (balkan11_cmp)C++14
100 / 100
2978 ms91000 KiB
#include "cmp.h" //4+3+3=10 void remember(int n) { int loc[4] = { 1, 1 + 4096, 1 + 4096 + 64, 1 + 4096 + 64 + 8 }; int mask[4] = { 07777, 07700, 07000, 00070 }; int shift[4] = { 0, 6, 9, 3 }; for (int i = 0; i < 4; i++){ bit_set(((n&mask[i]) >> shift[i]) + loc[i]); } } int compare(int b) { //일치하는 경우 제외 int loc[4] = { 1, 1 + 4096, 1 + 4096 + 64, 1 + 4096 + 64 + 8 }; int mask[4] = { 07777, 07700, 07000, 00070 }; int shift[4] = { 0, 6, 9, 3 }; int idx = 0; if (bit_get(((b&mask[idx]) >> shift[idx]) + loc[idx])) return 0; //일치함 따라서 뒤 6비트 봐야함 idx++; if (bit_get(((b&mask[idx]) >> shift[idx]) + loc[idx])){ int p = b % 64; //일치함 뒤 3비트로 확인해야함 3번 구간 idx += 2; if (bit_get(((b&mask[idx]) >> shift[idx]) + loc[idx])){ idx = 0; int m1 = 00007; int m2 = 07770; int q = (b&m1) >> shift[idx]; int w = b&(m2); if (q < 4){ //0 1 2 for (int i = 0; i < q; i++){ int now = w + (i << shift[idx]); if (bit_get(loc[idx] + now)) return 1; } return -1; } else{ //5 6 7 for (int i = q + 1; i < 8; i++){ int now = w + (i << shift[idx]); if (bit_get(loc[idx] + now)) return -1; } return 1; } } //불일치함 앞 3비트로 확인해야함 2번 구간 else{ idx = 3; int m1 = 00070; int m2 = 07707; int q = (b&m1) >> shift[idx]; int w = b&(m2); if (q < 4){ //0 1 2 for (int i = 0; i < q; i++){ int now = i; if (bit_get(loc[idx] + now)) return 1; } return -1; } else{ //5 6 7 for (int i = q + 1; i < 8; i++){ int now = i; if (bit_get(loc[idx] + now)) return -1; } return 1; } } } //불일치함 따라서 앞 6비트 봐야함 else{ //일치함 뒤 3비트로 확인해야함 1번 구간 idx++; if (bit_get(((b&mask[idx]) >> shift[idx]) + loc[idx])){ idx = 1; int m1 = 00700; int m2 = 07077; int q = (b&m1) >> shift[idx]; int w = b&(m2); if (q < 4){ //0 1 2 for (int i = 0; i < q; i++){ int now = (w >> shift[idx]) + i; if (bit_get(loc[idx] + now)) return 1; } return -1; } else{ //5 6 7 for (int i = q + 1; i < 8; i++){ int now = (w >> shift[idx]) + i; if (bit_get(loc[idx] + now)) return -1; } return 1; } } //불일치함 앞 3비트로 확인해야함 0번 구간 else{ idx = 2; int m1 = 07000; int m2 = 00777; int q = (b&m1) >> shift[idx]; int w = b&(m2); if (q < 4){ //0 1 2 for (int i = 0; i < q; i++){ int now = i; if (bit_get(loc[idx] + now)) return 1; } return -1; } else{ //5 6 7 for (int i = q + 1; i < 8; i++){ int now = i; if (bit_get(loc[idx] + now)) return -1; } return 1; } } } } // //int compare(int b) { // //일치하는 경우 제외 // // //일치함 따라서 뒤 6비트 봐야함 // if (bit_get(ri - k)){ // // //일치함 뒤 3비트로 확인해야함 3번 구간 // if (bit_get(ri - p / 8)){ // if (q<4){ // //0 1 2 // // } // else{ // //5 6 7 // // } // } // //불일치함 앞 3비트로 확인해야함 2번 구간 // else{ // // if (q<4){ // //0 1 2 // // } // else{ // //5 6 7 // // } // } // } // //불일치함 따라서 앞 6비트 봐야함 // else{ // //일치함 뒤 3비트로 확인해야함 1번 구간 // if (bit_get(ri - p / 8)){ // { // //0 1 2 // // } // else{ // //5 6 7 // // } // } // //불일치함 앞 3비트로 확인해야함 0번 구간 // else{ // // if (q<4){ // //0 1 2 // // } // else{ // //5 6 7 // // } // } // } //}

Compilation message (stderr)

cmp.cpp: In function 'int compare(int)':
cmp.cpp:56:8: warning: unused variable 'w' [-Wunused-variable]
    int w = b&(m2);
        ^
cmp.cpp:22:7: warning: unused variable 'p' [-Wunused-variable]
   int p = b % 64;
       ^
cmp.cpp:112:8: warning: unused variable 'w' [-Wunused-variable]
    int w = b&(m2);
        ^
#Verdict Execution timeMemoryGrader output
Fetching results...