Submission #1157626

#TimeUsernameProblemLanguageResultExecution timeMemory
1157626tvgk비밀 (JOI14_secret)C++20
100 / 100
339 ms4488 KiB
#include "secret.h" #include<bits/stdc++.h> using namespace std; #define task "a" #define se second #define fi first #define ll long long #define ii pair<ll, ll> const long mxN = 1e3 + 7; ll sum[15][mxN], a[mxN], n; void DvC(int l, int r, int tt, int lv) { if (tt == 1) { sum[lv][l] = a[l]; for (int i = l + 1; i <= r; i++) sum[lv][i] = Secret(sum[lv][i - 1], a[i]); } if (tt == 2) { sum[lv][r] = a[r]; for (int i = r - 1; i >= l; i--) sum[lv][i] = Secret(a[i], sum[lv][i + 1]); } if (l == r) return; int mid = (l + r) / 2; DvC(l, mid, 2, lv + 1); DvC(mid + 1, r, 1, lv + 1); } void Init(int N, int A[]) { n = N; for (int i = 1; i <= n; i++) a[i] = A[i - 1]; DvC(1, n, 0, 0); } int Binary(int l, int r, int u, int v, int lv) { if (l > v || u > r) return 0; if (l == r) return a[l]; int mid = (l + r) / 2; if (u <= mid && mid < v) return Secret(sum[lv][u], sum[lv][v]); return Binary(l, mid, u, v, lv + 1) + Binary(mid + 1, r, u, v, lv + 1); } int Query(int l, int r) { return Binary(1, n, l + 1, r + 1, 1); }
#Verdict Execution timeMemoryGrader output
Fetching results...