제출 #232803

#제출 시각아이디문제언어결과실행 시간메모리
232803AlexLuchianovBroken Device (JOI17_broken_device)C++14
0 / 100
66 ms3328 KiB
#include "Annalib.h" #include <iostream> using ll = long long; namespace Alice{ int const nmax = 150; int const modulo = 1000000007; int const base = 13; 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 < k; i++) block[P[i]] = 1; for(int i = 0; i < n; i += 2){ if(X == 0 || block[v[i]] == 1 || block[v[i + 1]] == 1) { Set(v[i], 0); Set(v[i + 1], 0); } else { int number = X % 3 + 1; X /= 3; Set(v[i], (0 < (number & 2))); Set(v[i + 1], (number & 1)); } } }
#include "Brunolib.h" #include <iostream> using ll = long long; namespace Ban{ int const nmax = 150; int const modulo = 1000000007; int const base = 13; 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...