제출 #93523

#제출 시각아이디문제언어결과실행 시간메모리
93523Dat160601Secret (JOI14_secret)C++14
0 / 100
495 ms8468 KiB
#include "secret.h" #include <bits/stdc++.h> using namespace std; #define mp make_pair #define pb push_back #define fi first #define se second int n, val[1007][1007], a[1007]; void prep(int l, int r){ if(l == r){ val[l][l] = a[l - 1]; return; } int mid = (l + r) >> 1; for(int i = mid; i >= l; i--){ if(i == mid) val[i][mid] = a[mid - 1]; else val[i][mid] = Secret(val[i + 1][mid], a[i - 1]); } for(int i = mid + 1; i <= r; i++){ if(i == mid + 1) val[mid + 1][i] = a[mid]; else val[mid + 1][i] = Secret(val[mid + 1][i - 1], a[i - 1]); } prep(l, mid); prep(mid + 1, r); } void Init(int N, int A[]){ n = N; for(int i = 0; i < n; i++) a[i] = A[i]; prep(1, N); } int solve(int l, int r, int L, int R){ if(L == R) return a[L - 1]; int mid = (l + r) >> 1; if(L <= mid && R > mid) return Secret(val[L][mid], val[mid + 1][R]); if(R <= mid) return solve(l, mid, L, R); else return solve(mid + 1, r, L, R); } int Query(int L, int R){ return solve(1, n, L + 1, R + 1); }
#Verdict Execution timeMemoryGrader output
Fetching results...