제출 #1263943

#제출 시각아이디문제언어결과실행 시간메모리
1263943wedonttalkanymoreSecret (JOI14_secret)C++20
0 / 100
623 ms589824 KiB
#include "secret.h" #include <bits/stdc++.h> using namespace std; using ll = long long; //#define int long long #define pii pair<ll, ll> #define fi first #define se second const ll N = 1e3 + 5, inf = 1e9, mod = 1e9 + 7, block = 320, lim = 16; int a[N]; int n; int dp[N][N]; void dnc(int l, int r) { if (l > r) return; int mid = (l + r) / 2; dp[mid][mid] = a[mid]; dp[mid + 1][mid + 1] = a[mid + 1]; for (int i = mid + 2; i <= r; i++) dp[mid][i] = Secret(dp[mid][i - 1], a[i]); for (int i = mid - 1; i >= l; i--) dp[mid][i] = Secret(dp[mid][i + 1], a[i]); dnc(l, mid); dnc(mid + 1, r); } void Init(int N, int A[]) { n = N; for (int i = 1; i <= n; i++) a[i] = A[i - 1]; dnc(1, n); } int make(int l, int r, int &L, int &R) { if (l == r) return 0; int mid = (l + r) / 2; if (L <= mid && mid <= R) { if (L <= mid) return Secret(dp[L][mid], dp[mid + 1][R]); else return dp[mid + 1][R]; } if (R <= mid) return make(l, mid, L, R); else return make(mid + 1, r, L, R); } int Query(int L, int R) { return make(1, n, L, R); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...