제출 #468829

#제출 시각아이디문제언어결과실행 시간메모리
468829OmegamanBroken Device (JOI17_broken_device)C++14
8 / 100
45 ms2584 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])) { M[i + 0] = 1; M[i + 1] = 0; M[i + 2] = xa[j + 0]; M[i + 3] = xa[j + 1]; j += 2; i += 3; } else if ( F[i] && (F[i + 2] == !xa[j + 0] || F[i + 2]) && (F[i + 3] == !xa[j + 1] || F[i + 3])) { M[i + 0] = 1; M[i + 1] = 1; M[i + 2] = !xa[j + 0]; M[i + 3] = !xa[j + 1]; j += 2; i += 3; } 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 += 2; i += 3; } } 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]; i += 3; j += 2; } } for (int i = 0; i < len; i++) { X += inc * M[i]; inc *= 2; } return X; }
#Verdict Execution timeMemoryGrader output
Fetching results...