제출 #1257054

#제출 시각아이디문제언어결과실행 시간메모리
1257054czauderna비밀 (JOI14_secret)C++20
0 / 100
336 ms4456 KiB
#include "secret.h" #include <bits/stdc++.h> const int N = 1e3+3; int opr[N][10], msk[N], Ar[N]; void pre(int l, int r, int lvl){ if(l==r) return; int m = (l+r)/2; for(int i=l; i<=m; i++) msk[i] ^= 1<<lvl; opr[m][lvl] = Ar[m]; for(int i=m-1; i>=l; i--) opr[i][lvl] = Secret(Ar[i], opr[i+1][lvl]); opr[m+1][lvl] = Ar[m+1]; for(int i=m+2; i<=r; i++) opr[i][lvl] = Secret(Ar[i], opr[i-1][lvl]); pre(l, m, lvl+1); pre(m+1, r, lvl+1); } void Init(int N, int A[]) { for(int i=0; i<N; i++) Ar[i] = A[i]; pre(0, N-1, 0); } int Query(int L, int R) { if(L == R) return Ar[L]; int ms = msk[L]^msk[R]; int lvl=0; for(int i=0; i<10; i++){ lvl=i; if(ms&(1<<i)) break; } return Secret(opr[L][lvl], opr[R][lvl]); }
#Verdict Execution timeMemoryGrader output
Fetching results...