Submission #1313413

#TimeUsernameProblemLanguageResultExecution timeMemory
1313413hssaan_arifSecret (JOI14_secret)C++20
100 / 100
379 ms8288 KiB
// #include <bits/stdc++.h> #include "secret.h" #include <iostream> #include <cmath> #include <algorithm> #include <map> #include <unordered_map> #include <vector> #include <iomanip> #include <string> #include <queue> #include <set> #include <deque> using namespace std; #define endl "\n" #define pb push_back // #define int long long #define fi first #define se second const int N = 1e3 + 5, M = 1e9 + 7, LG = 10; int n , A[N] , sp[N][N] , B[N]; void cal(int s , int e){ if (s+1 == e){ sp[s][s] = A[s]; return; } int mid = (s+e)/2; sp[mid][mid-1] = A[mid-1]; for (int i=mid-2 ; i>=s ; i--){ sp[mid][i] = Secret(A[i] , sp[mid][i+1]); } sp[mid][mid] = A[mid]; for (int i=mid+1 ; i<e ; i++){ sp[mid][i] = Secret(sp[mid][i-1] , A[i]); } cal(s,mid); cal(mid,e); } int ans(int s , int e , int l , int r){ if (s+1 == e){ return A[s]; } int mid = (s+e)/2; if (r < mid){ return ans(s,mid,l,r); }else if (mid <= l){ return ans(mid , e,l,r); }else{ return Secret(sp[mid][l] , sp[mid][r]); } } void Init(int N, int P[]) { n = N; for (int i=0 ; i<n ; i++){ A[i] = P[i]; } cal(0 , n); } int Query(int L, int R) { return ans(0 , n , L , R); }
#Verdict Execution timeMemoryGrader output
Fetching results...