Submission #232806

#TimeUsernameProblemLanguageResultExecution timeMemory
232806AlexLuchianovBroken Device (JOI17_broken_device)C++14
100 / 100
72 ms3328 KiB
#include "Annalib.h" #include <iostream> using ll = long long; namespace Alice{ int const nmax = 150; int const modulo = 1000000007; int const base = 23; int const rest = 7; int block[1 + nmax]; int v[1 + nmax]; int root; int myrand(){ root = (1LL * root * base + rest) % modulo; return root; } void staticshuffle(int n){ for(int i = 0; i < n; i++) v[i] = i; for(int i = 0; i < 3 * n; i++){ int x = myrand() % n; int y = myrand() % n; std::swap(v[x], v[y]); } } } using namespace Alice; void Anna( int n, long long X, int k, int P[] ){ root = 1; staticshuffle(n); for(int i = 0; i < n; i++) block[i] = 1; for(int i = 0; i < k; i++) block[P[i]] = 0; for(int i = 0; i < n; i += 2){ int number = X % 3 + 1; int x = (0 < (number & 2)); int y = (number & 1); if(0 < X && x <= block[v[i]] && y <= block[v[i + 1]]) { X /= 3; Set(v[i], x); Set(v[i + 1], y); } else { Set(v[i], 0); Set(v[i + 1], 0); } } }
#include "Brunolib.h" #include <iostream> using ll = long long; namespace Ban{ int const nmax = 150; int const modulo = 1000000007; int const base = 23; int const rest = 7; int v[1 + nmax]; int root; int myrand(){ root = (1LL * root * base + rest) % modulo; return root; } void staticshuffle(int n){ for(int i = 0; i < n; i++) v[i] = i; for(int i = 0; i < 3 * n; i++){ int x = myrand() % n; int y = myrand() % n; std::swap(v[x], v[y]); } } } using namespace Ban; long long Bruno(int n, int A[] ){ root = 1; staticshuffle(n); ll result = 0; for(int i = n - 2; 0 <= i; i -= 2){ if(A[v[i]] == 0 && A[v[i + 1]] == 0) { continue; } else { int number = (A[v[i]]<<1) + A[v[i + 1]] - 1; result = result * 3 + number; } } return result; }
#Verdict Execution timeMemoryGrader output
Fetching results...