Submission #1292288

#TimeUsernameProblemLanguageResultExecution timeMemory
1292288eyadooz비밀 (JOI14_secret)C++20
0 / 100
341 ms4496 KiB
#include<bits/stdc++.h> #include"secret.h" using namespace std; typedef long long ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; #define pb push_back #define all(x) (x).begin(), (x).end() #define sz(x) (int) (x).size() #define endl '\n' ll s[30][100005], a[100005], n=0; void solve(int l, int r, int lvl) { if(l>r) return; if(l==r) {s[lvl][l]=a[l];return;} int mid=(l+r)/2; s[lvl][mid]=a[mid], s[lvl][mid+1]=a[mid+1]; for(int i=mid+2;i <= r;i++) s[lvl][i]=Secret(s[lvl][i-1], a[i]); for(int i=mid-1;i >= l;i--) s[lvl][i]=Secret(a[i], s[lvl][i+1]); solve(l, mid, lvl+1); solve(mid+1, r, lvl+1); } void Init(int N, int A[]) { n=N; for(int i = 0;i < N;i++) a[i]=A[i]; solve(0, N-1, 0); } int Query(int L, int R) { int mid=n/2; int l=0, r=n-1, lvl=0; while(mid>R&&mid<L) { int md=(l+r)/2; if(md>R) r=md; else l=md+1; mid=l; lvl++; } return Secret(s[lvl][L], s[lvl][R]); }
#Verdict Execution timeMemoryGrader output
Fetching results...