Submission #729944

#TimeUsernameProblemLanguageResultExecution timeMemory
729944jampmSecret (JOI14_secret)C++17
0 / 100
454 ms4412 KiB
#include "secret.h" #include <bits/stdc++.h> using namespace std; using ll = long long int; int const Mxn = 1e3 + 1; int const LOGN = 13; ll ST[LOGN][Mxn]; ll A[Mxn]; int n; void build(int L = 0, int R = n, int depth = 0) { if (L + 1 == R) { ST[depth][L] = A[L]; return; } int Mid = (L + R)>>1; for (int i = Mid; i < R; i++) { ST[depth][i] = (i == Mid) ? A[i] : Secret(ST[depth][i - 1], A[i]); } for (int i = Mid - 1; i >= L; i--) { ST[depth][i] = (i == Mid - 1) ? A[i] : Secret(A[i], ST[depth][i + 1]); } build(L, Mid, depth + 1), build(Mid, R, depth + 1); } int query(int l, int r, int L = 0, int R = n, int depth = 0) { //cout << L << " " << R << endl; if (L + 1 == R) return A[L]; int Mid = (L + R)>>1; if (l <= Mid && Mid < r) return Secret(ST[depth][l], ST[depth][r]); if (r < Mid) return query(l, r, L, Mid, depth + 1); else return query(l, r, Mid, R, depth + 1); } void Init(int N, int a[]) { for (int i = 0; i < N; i++) A[i] = a[i]; n = N; build(); } int Query(int L, int R) { return query(L, R); }
#Verdict Execution timeMemoryGrader output
Fetching results...