제출 #1139036

#제출 시각아이디문제언어결과실행 시간메모리
1139036luanzito비밀 (JOI14_secret)C++20
0 / 100
333 ms4468 KiB
#include "secret.h" #include <bits/stdc++.h> using namespace std; const int maxn = 1e3 + 10; const int maxl = 1e1 + 5; int n; int v[maxn]; int st[maxn][maxl]; void build(int l, int r, int p){ if(l == r){ st[l][p] = v[l]; return; } int m = (l + r) / 2; build(l, m, p + 1); build(m + 1, r, p + 1); st[m][p] = v[m]; st[m + 1][p] = v[m + 1]; for(int i = m - 1; i >= l; i--) st[i][p] = Secret(v[i], st[i + 1][p]); for(int i = m + 2; i <= r; i++) st[i][p] = Secret(v[i], st[i - 1][p]); } void Init(int N, int A[]){ n = N; for(int i = 1; i <= n; i++) v[i] = A[i - 1]; build(1, n, 0); } int solve(int a, int b, int p, int l, int r){ if(l == r) return st[l][p]; int m = (l + r) / 2; if(a <= m && b > m) return Secret(st[a][p], st[b][p]); if(a <= m) return solve(a, b, p + 1, l, m); else return solve(a, b, p + 1, m + 1, r); } int Query(int L, int R){ return solve(L + 1, R + 1, 0, 1, n); }
#Verdict Execution timeMemoryGrader output
Fetching results...