제출 #468835

#제출 시각아이디문제언어결과실행 시간메모리
468835OmegamanBroken Device (JOI17_broken_device)C++14
63 / 100
43 ms2380 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 true; return false; } void Anna(int N, long long X, int K, int P[]){ const int xl = int(log2(X) + 0.5); bool xa[N]; long long x = X; for( int i = 0; i < N; i++ ){ xa[i] = x % 2; x /= 2; } bool F[N]; for ( int i = 0; i < N; i++ ) { F[i] = !isInArr(K, P, i); } bool M[N]; int j = 0; for( int i = 0; i < N; i++){ if (j < (xl/3+1)*3 && F[i]){ if( (F[i + 2] == xa[j + 0] || F[i + 2]) && (F[i + 3] == xa[j + 1] || F[i + 3]) && (F[i + 4] == xa[j + 2] || F[i + 4])) { M[i + 0] = 1; M[i + 1] = 0; M[i + 2] = xa[j + 0]; M[i + 3] = xa[j + 1]; M[i + 4] = xa[j + 2]; j += 3; i += 4; } else if ( F[i+1] && (F[i + 2] == !xa[j + 0] || F[i + 2]) && (F[i + 3] == !xa[j + 1] || F[i + 3]) && (F[i + 4] == !xa[j + 2] || F[i + 4])) { M[i + 0] = 1; M[i + 1] = 1; M[i + 2] = !xa[j + 0]; M[i + 3] = !xa[j + 1]; M[i + 4] = !xa[j + 2]; j += 3; i += 4; } else { M[i] = 0; } } else { M[i] = 0; } } for ( int i = 0; i < N; i++ ) { Set(i, (int)M[i]); } }
#include "Brunolib.h" long long Bruno( int N, int A[] ){ long long X = 0; long long inc = 1; int len = 0; for( int i = 0; i < N; i++){ if (A[i]) { len += 3; i += 4; } } bool M[len]; int j = 0; for( int i = 0; i < N-3 && j < len; i++){ if (A[i]) { M[j + 0] = A[i + 2] ^ A[i + 1]; M[j + 1] = A[i + 3] ^ A[i + 1]; M[j + 2] = A[i + 4] ^ A[i + 1]; i += 4; j += 3; } } for (int i = 0; i < len; i++) { X += inc * M[i]; inc *= 2; } return X; }
#Verdict Execution timeMemoryGrader output
Fetching results...