제출 #1292357

#제출 시각아이디문제언어결과실행 시간메모리
1292357basaSecret (JOI14_secret)C++20
0 / 100
335 ms12232 KiB
#include "bits/stdc++.h" #include "secret.h" using namespace std; // #define int long long const int maxn = 1e3 + 5; int n, a[maxn]; int prel[maxn][maxn], prer[maxn][maxn]; void cmp(int l, int r){ if(l == r) return; int mid = (l + r) / 2; for(int i = mid; i >= l; i--){ if(i == mid){ prel[mid][i] = a[i]; continue; } prel[mid][i] = Secret(a[i], prel[mid][i + 1]); } for(int i = mid + 1; i <= r; i++){ if(i == mid + 1){ prer[mid + 1][i] = a[i]; continue; } prer[mid][i] = Secret(prer[mid][i - 1], a[i]); } cmp(l, mid); cmp(mid + 1, r); } int ans; void solve(int l, int r, int l1, int r1){ if(l1 == r1) return; int mid = (l + r) / 2; if(!(l >= l1 && r <= r1)) return; if(l <= mid && r > mid){ ans = Secret(prel[mid][l], prer[mid][r]); return; } solve(l, r, l1, mid); solve(l, r, mid + 1, r1); } void Init(int tmpn, int tmpa[]){ n = tmpn; for(int i = 0; i < n; i++) a[i] = tmpa[i]; cmp(0, n - 1); } int Query(int l, int r){ ans = 0; if(l == r) return a[l]; solve(l, r, 0, n - 1); return ans; } // signed main() // { // cin.tie(0) -> sync_with_stdio(0); // }
#Verdict Execution timeMemoryGrader output
Fetching results...