# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
754022 | 2023-06-06T13:29:10 Z | Zflop | 비밀 (JOI14_secret) | C++14 | 0 ms | 0 KB |
#include "secret.h" const int NMAX = (int)1e3; int n; int prec[NMAX][NMAX]; void DC (int l,int r,int A[]){ if(l >= r) return; int m = (l + r) / 2; prec[m][m] = A[m]; prec[m + 1][m + 1] = A[m + 1]; for (int i = m - 1; i >= l;--i) prec[i][m] = Secret(prec[i + 1][m],A[i]); for (int i = m + 2; i <= r;++i) prec[m][i] = Secret(prec[m + 1][i - 1],A[i]); DC(l,m,A); DC(m + 1,r,A); } void Init(int N,int A[]){ n = N; DC(0,N - 1,A); } int Query(int L,int R){ int l = 0,r = n - 1; while(l != r){ int m = (l + r) / 2; if(L <= m && m < R) return Secret(prec[L][m],prec[m + 1],R); if(R == m) return prec[l][m]; if(L > m) l = m + 1; else r = m; } return prec[l][l]; }