제출 #545165

#제출 시각아이디문제언어결과실행 시간메모리
545165rainboy질문 (CEOI14_question_grader)C11
100 / 100
3114 ms24220 KiB
#define L 12 #define N 924 /* N = choose(L, L / 2) */ static int cnt[1 << L], bb[N], n, inited = 0; void init() { if (!inited) { int b; n = 0; cnt[0] = 0; for (b = 1; b < 1 << L; b++) if ((cnt[b] = cnt[b & b - 1] + 1) == L / 2) bb[n++] = b; inited = 1; } } int encode(int n, int x, int y) { int l; init(); x--, y--; for (l = 0; l < L; l++) if ((bb[x] & 1 << l) == 0 && (bb[y] & 1 << l) != 0) return l + 1; return 0; }
#define L 12 #define N 924 /* N = choose(L, L / 2) */ static int cnt[1 << L], bb[N], n, inited = 0; void init() { if (!inited) { int b; n = 0; cnt[0] = 0; for (b = 1; b < 1 << L; b++) if ((cnt[b] = cnt[b & b - 1] + 1) == L / 2) bb[n++] = b; inited = 1; } } int decode(int n, int x, int y) { init(); x--, y--; return (bb[x] & 1 << y) == 0; }

컴파일 시 표준 에러 (stderr) 메시지

encoder.c: In function 'init':
encoder.c:13:28: warning: suggest parentheses around '-' in operand of '&' [-Wparentheses]
   13 |    if ((cnt[b] = cnt[b & b - 1] + 1) == L / 2)
      |                          ~~^~~

decoder.c: In function 'init':
decoder.c:13:28: warning: suggest parentheses around '-' in operand of '&' [-Wparentheses]
   13 |    if ((cnt[b] = cnt[b & b - 1] + 1) == L / 2)
      |                          ~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...