Submission #984410

#TimeUsernameProblemLanguageResultExecution timeMemory
984410LOLOLOSecret (JOI14_secret)C++11
0 / 100
400 ms8528 KiB
#include <bits/stdc++.h> #include "secret.h" #define ll long long using namespace std; #define f first #define s second #define pb push_back #define ep emplace #define eb emplace_back #define lb lower_bound #define ub upper_bound #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define uniquev(v) sort(all(v)), (v).resize(unique(all(v)) - (v).begin()) #define mem(f,x) memset(f , x , sizeof(f)) #define sz(x) (int)(x).size() #define __lcm(a, b) (1ll * ((a) / __gcd((a), (b))) * (b)) #define mxx *max_element #define mnn *min_element #define cntbit(x) __builtin_popcountll(x) #define len(x) (int)(x.length()) const int N = 1e3 + 10; int n; int a[N], f[N][N]; void prepare(int l, int r) { if (l >= r) { return; } int m = (l + r) / 2; f[m][m] = a[m]; f[m + 1][m + 1] = a[m + 1]; for (int j = m + 2; j <= r; j++) { f[m + 1][j] = Secret(f[m + 1][j - 1], a[j]); } for (int j = m - 1; j >= l; j--) { f[j][m] = Secret(f[j + 1][m], a[j]); } prepare(l, m); prepare(m + 1, r); } void Init(int _n, int _a[]) { n = _n; for (int i = 1; i <= n; i++) a[i] = _a[i - 1]; prepare(1, n); } int get(int l, int r, int u, int v) { int m = (l + r) / 2; if (m < u) return get(m + 1, r, u, v); if (m >= v) return get(l, m, u, v); return Secret(f[u][m], f[m + 1][v]); } int Query(int l, int r) { l++, r++; if (l == r) { return a[l]; } return get(1, n, l, r); }
#Verdict Execution timeMemoryGrader output
Fetching results...