Submission #701827

#TimeUsernameProblemLanguageResultExecution timeMemory
701827RandomLBSecret (JOI14_secret)C++17
100 / 100
463 ms8224 KiB
#include "secret.h" #include <bits/stdc++.h> using namespace std; //================================= const int MAX = 1005; int arr[MAX], res[MAX][MAX], n; int secret(int a, int b){ return a+b/2*2; } void solve(int l, int r){ if (l == r) return; int m = l+(r-l)/2; res[m][m] = arr[m], res[m+1][m+1] = arr[m+1]; for (int i = m-1; i >= l; i--) res[i][m] = Secret(arr[i], res[i+1][m]); for (int i = m+2; i <= r; i++) res[m+1][i] = Secret(res[m+1][i-1], arr[i]); solve(l, m); solve(m+1, r); } int solve(int l, int r, int tl, int tr){ int m = l+(r-l)/2; if (tl <= m && m < tr) return Secret(res[tl][m], res[m+1][tr]); return (tr <= m? solve(l, m, tl, tr) : solve(m+1, r, tl, tr)); } void Init(int N, int v[]){ n = N; for (int i = 0; i < n; i++) arr[i] = v[i]; solve(0, n-1); } int Query(int l, int r){ if (l == r) return arr[l]; return solve(0, n-1, l, r); }
#Verdict Execution timeMemoryGrader output
Fetching results...