제출 #468780

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