제출 #703791

#제출 시각아이디문제언어결과실행 시간메모리
703791dubabuba비밀 (JOI14_secret)C++14
0 / 100
447 ms8640 KiB
#include "secret.h" #include <bits/stdc++.h> using namespace std; const int mxn = 100; int n, range[mxn][mxn]; void build(int l, int r, int a[]) { if(l == r) return; // cout << "building: " << l << ' ' << r << '\n'; int m = (l + r) / 2; int M = (l + r) / 2 + 1; // cout << " > " << m << ' ' << M << '\n'; range[m][m] = a[m]; range[M][M] = a[M]; for(int i = M + 1; i < r; i++) range[M][i] = Secret(range[M][i - 1], a[i]); for(int i = m - 1; i >= 0; i--) range[i][m] = Secret(range[i + 1][m], a[i]); build(l, m, a); build(M, r, a); } void Init(int n, int a[]) { ::n = n; build(0, n - 1, a); } int Query(int L, int R) { int l = 0, r = n - 1; // cout << L << ' ' << R << '\n'; while(r - l > 1) { int m = (l + r) / 2; int M = (l + r) / 2 + 1; // cout << "finding: " << l << ' ' << r << '\n'; // cout << " > " << m << ' ' << M << '\n'; if(L <= m && M <= R) return Secret(range[L][m], range[M][R]); if(R <= m) r = m; if(M <= L) l = M; } // cout << "sussy baka " << range[L][R] << '\n'; return range[L][R]; }
#Verdict Execution timeMemoryGrader output
Fetching results...