제출 #470417

#제출 시각아이디문제언어결과실행 시간메모리
470417OmegamanBroken Device (JOI17_broken_device)C++14
49 / 100
51 ms2672 KiB
#include "Annalib.h" #include <math.h> bool isInArr(int ArrLen, int Arr[], int val) { for (int i = 0; i < ArrLen; i++) if (Arr[i] == val) return 1; return 0; } void Anna(int N, long long X, int K, int P[]){ bool d[N], F[N]; long long x = X; int ones = 0; int zeros = 0; for( int i = 0; i < N; i++ ){ if(i > 0) { d[i] = x % 2; if(x > 0) { if(d[i]) ones++; else zeros++; } x /= 2; } F[i] = !isInArr(K, P, i); } d[0] = zeros <= ones; bool M[N]; int dh = 0; bool pa = 0; for( int i = 0; i < N; i+=3) { int m = 0; if (dh < 61) { const bool d1 = d[dh + 0], d2 = dh < 60 ? d[dh + 1] : 0, f1 = F[i + 0], f2 = F[i + 1], f3 = F[i + 2]; int dp = d1*2+d2*1; int bp = !f1*4+!f2*2+!f3*1; m = (int[2][4][8]){ { {3, 4, 4, 4, 3, 2, 0, 0}, {5, 4, 5, 4, 2, 2, 0, 0}, {7, 0, 1, 0, 1, 0, 1, 0}, {6, 6, 1, 0, 1, 0, 1, 0}, }, { {3, 4, 4, 4, 3, 0, 0, 0}, {5, 4, 5, 4, 0, 0, 0, 0}, {7, 2, 1, 0, 1, 2, 1, 0}, {6, 6, 1, 0, 1, 2, 1, 0}, } }[d[0]&&dh>0][dp][bp]; } if(m) dh++; if((bool[8]){0,0,0,1,0,1,1,1}[m]) { dh++; } M[i + 2] = m % 2; m /= 2; M[i + 1] = m % 2; m /= 2; M[i + 0] = m % 2; } for ( int i = 0; i < N; i++ ) { Set(i, (int)M[i]); } }
#include "Brunolib.h" long long Bruno( int N, int A[] ) { int len = (N < 60 ? N : 60) +1 ; bool d[len]; for(int i = 0; i < len; i++) d[i] = 0; int dh = 0; for(int i = 0; i < N; i+=3) { switch (A[i]*4 + A[i+1]*2 + A[i+2]) { case 0: break; case 1: d[dh++] = 1; break; case 2: d[dh++] = d[0]; break; case 3: d[dh++] = 0; d[dh++] = 0; break; case 4: d[dh++] = 0; break; case 5: d[dh++] = 0; d[dh++] = 1; break; case 6: d[dh++] = 1; d[dh++] = 1; break; case 7: d[dh++] = 1; d[dh++] = 0; break; } } long long X = 0; long long inc = 1; for (int i = 1; i < len; i++) { X += inc * d[i]; inc *= 2; } return X; }

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

Anna.cpp: In function 'void Anna(int, long long int, int, int*)':
Anna.cpp:32:7: warning: unused variable 'pa' [-Wunused-variable]
   32 |  bool pa = 0;
      |       ^~
#Verdict Execution timeMemoryGrader output
Fetching results...