Submission #922550

#TimeUsernameProblemLanguageResultExecution timeMemory
922550hqminhuwuSecret (JOI14_secret)C++14
0 / 100
390 ms13132 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 n, f[N][N]; void calc (int l, int r, int a[]){ 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, a); if (mid + 1 < r) calc (mid + 1, r, a); } void Init (int u, int a[]){ n = u; calc (0, n - 1, a); } 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 < u) l = mid + 1; else r = mid; } return f[l][l]; } /* */
#Verdict Execution timeMemoryGrader output
Fetching results...