Submission #1067628

#TimeUsernameProblemLanguageResultExecution timeMemory
1067628ThunnusSecret (JOI14_secret)C++17
0 / 100
307 ms8528 KiB
#include "secret.h" #include<bits/stdc++.h> using namespace std; using i64 = long long; //#define int i64 #define vi vector<int> #define vvi vector<vi> #define vb vector<bool> #define pii pair<int, int> #define fi first #define se second #define sz(x) (int)(x).size() const int MX = 1e3; int n, dp[MX][MX]; inline void divide(int le, int ri, int A[]){ int mid = (le + ri) / 2; dp[mid][mid] = A[mid], dp[mid + 1][mid + 1] = A[mid + 1]; for(int i = mid - 1; i >= le; i--){ dp[mid][i] = Secret(dp[mid][i + 1], A[i]); } for(int i = mid + 2; i <= ri; i++){ dp[mid + 1][i] = Secret(dp[mid + 1][i - 1], A[i]); } if(le < mid) divide(le, mid, A); if(mid + 1 < ri) divide(mid + 1, ri, A); } void Init(int N, int A[]){ n = N; divide(0, n - 1, A); } int Query(int L, int R){ int le = 0, ri = n - 1, mid; while(ri != le){ mid = (ri + le) / 2; if(L <= mid && R > mid) return Secret(dp[mid][L], dp[mid + 1][R]); else if(mid == R) return dp[mid][L]; else if(mid < L) le = mid + 1; else ri = mid; } return dp[le][le]; }
#Verdict Execution timeMemoryGrader output
Fetching results...