Submission #101881

#TimeUsernameProblemLanguageResultExecution timeMemory
101881hugo_pmBroken Device (JOI17_broken_device)C++17
8 / 100
61 ms3328 KiB
#include "Annalib.h" typedef long long llg; const int borne = 155; int lenSeq, nbCas; bool bloque[borne]; int ret[borne]; int k[borne] {0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0}; long long nombre; bool solve(int x) { int i = 0; while (bloque[i] || k[i] != x) ++i; ret[i] = 1; ++i; for (int b = 59; b >= 0; --b) { int c = 0; if (nombre & (1LL << (long long)(b))) c = 1; if (x) c = 1-c; while (bloque[i] || (bloque[i+1] && c)) ++i; if (i+1 >= lenSeq) return false; ret[i] = 1; ret[i+1] = c; i += 2; } return true; } void Anna( int N, long long X, int K, int P[] ){ lenSeq = N; nombre = X; for (int i = 0; i < N; ++i) { bloque[i] = false; ret[i] = 0; } for (int i = 0; i < K; ++i) bloque[P[i]] = true; if (! solve(0)) { for (int i = 0; i < N; ++i) ret[i] = 0; solve(1); } for (int i = 0; i < N; ++i) Set(i, ret[i]); return; }
#include "Brunolib.h" int k2[155] {0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0}; long long Bruno( int N, int A[] ){ long long X = 0; int i = 0; while (A[i] == 0) ++i; int rq = 1 - k2[i]; ++i; for (int b = 59; b >= 0; --b) { while (A[i] == 0) ++i; ++i; if (A[i] == rq) X += 1LL << (long long)(b); ++i; } return X; }
#Verdict Execution timeMemoryGrader output
Fetching results...