제출 #1228771

#제출 시각아이디문제언어결과실행 시간메모리
1228771PenguinsAreCuteBroken Device (JOI17_broken_device)C++17
55 / 100
26 ms1492 KiB
#include "Annalib.h" #include <bits/stdc++.h> using namespace std; const int B = 4; void Anna( int N, long long X, int K, int P[] ) { int perm[N]; iota(perm,perm+N,0); mt19937 rng(42069); shuffle(perm,perm+N,rng); int inv[N]; for(int i=0;i<N;i++) inv[perm[i]] = i; int Q[K]; for(int i=0;i<K;i++) Q[i] = inv[P[i]]; sort(Q,Q+K); int cnt = 0; for(int i=0;i<=K;i++) { int l = (i ? Q[i-1] + 1 : 0); int r = (i < K ? Q[i] - 1 : N - 1); if(l > r) continue; while(l + B-1 <= r) { Set(perm[l], 1); for(int j=1;j<B;j++) Set(perm[l + j], !!(X & (1LL << (cnt++)))); l += B; } while(l <= r) Set(perm[l++], 0); } for(int i=0;i<K;i++) Set(P[i], 0); }
#include "Brunolib.h" #include <bits/stdc++.h> using namespace std; const int B = 4; long long Bruno( int N, int A[] ){ int perm[N]; iota(perm,perm+N,0); mt19937 rng(42069); shuffle(perm,perm+N,rng); long long X = 0; int cnt = 0; for(int i=0;i<N;) { if(A[perm[i]]) { for(int j=1;j<B;j++) X |= A[perm[i+j]] * (1LL << (cnt++)); i += B; } else i++; } return X; }
#Verdict Execution timeMemoryGrader output
Fetching results...