Submission #922545

#TimeUsernameProblemLanguageResultExecution timeMemory
922545hqminhuwuSecret (JOI14_secret)C++14
0 / 100
395 ms13140 KiB
#include "secret.h" #include <bits/stdc++.h> #define forr(_a,_b,_c) for(int _a = (_b); _a <= (_c); ++_a) #define ford(_a,_b,_c) for(int _a = (_b) + 1; _a --> (_c);) #define forf(_a,_b,_c) for(int _a = (_b); _a < (_c); ++_a) #define st first #define nd second #define ll long long #define ull unsigned long long #define pii pair <int,int> #define pll pair <ll,ll> #define piii pair <int,pii> #define vi vector <int> #define pb push_back #define mp make_pair #define all(x) begin(x),end(x) #define file "test" using namespace std; const int N = 2e3 + 5; const ll oo = 1e9; const ll mod = 1e9 + 7; int a[N], n, f[N][N]; void calc (int l, int r){ if (r < l) return; if (l == r){ f[l][l] = a[l]; return; } int mid = (l + r) / 2; f[mid][mid] = a[mid]; f[mid + 1][mid + 1] = a[mid + 1]; ford (i, mid - 1, l) f[mid][i] = Secret(a[i], f[mid][i + 1]); forr (i, mid + 2, r) f[mid + 1][i] = Secret(a[i], f[mid + 1][i - 1]); if (l < mid) calc (l, mid); if (mid + 1 < r) calc (mid + 1, r); } void Init (int u, int z[]){ n = u; forf (i, 0, n) a[i] = z[i]; calc (0, n - 1); } int Query (int u, int v){ int l = 0, r = n - 1; while (l < r){ int mid = (l + r) / 2; if (mid >= u && mid < v) return Secret(f[mid][u], f[mid + 1][v]); if (mid == v) return f[mid][u]; if (mid > v) r = mid; else l = mid + 1; } return f[l][l]; } /* */
#Verdict Execution timeMemoryGrader output
Fetching results...