Submission #469985

#TimeUsernameProblemLanguageResultExecution timeMemory
469985OmegamanBroken Device (JOI17_broken_device)C++14
0 / 100
46 ms2740 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[]){ bool d[N]; long long x = X; for( int i = 0; i < N; i++ ){ d[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 dh = 0; for( int i = 0; i < N; i+=3) { int m = 0; if (dh < 60) { int broken = (int)!F[i+0] + (int)!F[i+1] + (int)!F[i+2]; if (broken < 2) { // [ 00 ] if ( !d[dh] && !d[dh+1] ) { if (F[i + 1] && F[i + 2] ) { m = 3; dh++; } else { m = 4; } } // [ 01 ] else if ( !d[dh] && d[dh+1] ) { if (F[i + 0] && F[i + 2] ) { m = 5; dh++; } else { m = 2; } } // [ 10 ] else if ( d[dh] && !d[dh+1] ) { if (F[i + 0] && F[i + 1] ) { m = 6; dh++; } else { m = 1; } } // [ 11 ] else if ( d[dh] && d[dh+1] ) { if (F[i + 0] && F[i + 1] && F[i + 2] ){ m = 7; dh++; } else { m = 1; } } dh++; } else if ( broken < 3 ) { if ( d[dh] ) { if (F[i+2]) { m = 1; dh++; } } else { if (F[i+0]) { m = 4; dh++; } if (F[i+1]) { m = 2; 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[] ) { long long X = 0; long long inc = 1; int len = (N < 60 ? N : 60); bool d[len]; for( int i = 0; i < len; i++) d[i] = 0; int dh = 0; for( int i = 0; i < N; i+=3) { int m = (int)A[i+0] * 4 + (int)A[i+1] * 2 + (int)A[i+2] * 1; switch (m) { case 0: break; case 1: d[dh++] = 1; break; case 2: d[dh++] = 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++] = 0; break; case 7: d[dh++] = 1; d[dh++] = 1; break; } } for (int i = 0; i < len; i++) { X += inc * d[i]; inc *= 2; } return X; }
#Verdict Execution timeMemoryGrader output
Fetching results...