Submission #1313408

#TimeUsernameProblemLanguageResultExecution timeMemory
1313408muhammad-ahmad비밀 (JOI14_secret)C++20
0 / 100
338 ms8284 KiB
#include <bits/stdc++.h> #include "secret.h" using namespace std; const int N = 1e3 + 5; int n, pref[N][N], a[N]; void precalculate(int l, int r){ int mid = (l + r) / 2; pref[mid][mid] = a[mid]; pref[mid + 1][mid + 1] = a[mid]; for (int i = mid - 1; i >= l; i--){ pref[mid][i] = Secret(pref[mid][i + 1], a[i]); } for (int i = mid + 2; i <= r; i++){ pref[mid + 1][i] = Secret(pref[mid + 1][i], a[i]); } if (l < mid) precalculate(l, mid); if (r > mid + 1) precalculate(mid + 1, r); } void Init(int nn, int A[]){ n = nn; for (int i = 0; i < n; i++) a[i] = A[i]; precalculate(0, n - 1); } int Query(int L, int R){ int l = 0, r = n - 1; while (l != r){ int mid = (l + r) / 2; if (L <= mid && mid < R) return Secret(pref[mid][L], pref[mid + 1][R]); else if (mid == R) return pref[mid][L]; else if (mid < L) l = mid + 1; else r = mid; } return pref[l][r]; }
#Verdict Execution timeMemoryGrader output
Fetching results...