Submission #735835

#TimeUsernameProblemLanguageResultExecution timeMemory
735835sandry24Secret (JOI14_secret)C++17
100 / 100
484 ms12228 KiB
#include <bits/stdc++.h> #include "secret.h" using namespace std; #pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") typedef long long ll; typedef vector<int> vi; typedef pair<int, int> pi; #define pb push_back #define mp make_pair #define f first #define s second const int MAX_N = 1005; int meetpoint[MAX_N][MAX_N]; int res[MAX_N][MAX_N]; void build(int l, int r){ if(l >= r) return; int mid = (l+r)/2; for(int i = l; i <= mid; i++){ for(int j = mid+1; j <= r; j++) meetpoint[i][j] = mid; } for(int i = mid+2; i <= r; i++) res[mid+1][i] = Secret(res[mid+1][i-1], res[i][i]); for(int i = mid-1; i >= l; i--) res[i][mid] = Secret(res[i][i], res[i+1][mid]); build(l, mid); build(mid+1, r); } void Init(int N, int A[]){ for(int i = 0; i < N; i++){ for(int j = 0; j < N; j++){ res[i][j] = (i == j ? A[i] : -1); } } build(0, N-1); } int Query(int L, int R){ if(res[L][R] != -1) return res[L][R]; int mid = meetpoint[L][R]; return Secret(res[L][mid], res[mid+1][R]); }
#Verdict Execution timeMemoryGrader output
Fetching results...