Submission #536198

#TimeUsernameProblemLanguageResultExecution timeMemory
536198michaoSecret (JOI14_secret)C++14
0 / 100
20095 ms4396 KiB
#include <bits/stdc++.h> #include "secret.h" #define mp make_pair #define pb push_back #define ld long double #define pii pair<int,int> #define sz(x) (int)x.size() #define piii pair<pii,pii> #define precise cout<<fixed<<setprecision(10) #define st first #define nd second #define ins insert #define vi vector<int> #define BOOST ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0) using namespace std; const int MAX=1e3+5; int pref[MAX][MAX]; int suf[MAX][MAX]; int n; int a[MAX]; void rec1(int l,int r){ if (l>r)return; int mid=(l+r)>>1; pref[mid][mid]=a[mid]; suf[mid][mid+1]=a[mid+1]; for (int i=mid-1;i>=l;i--){ pref[mid][i]=Secret(a[i],pref[mid][i+1]); } for (int i=mid+1;i<=r;i++){ suf[mid][i]=Secret(suf[mid][i-1],a[i]); } rec1(l,mid); rec1(mid+1,r); } void Init(int N,int A[]){ n=N; for (int i=0;i<n;i++)a[i]=A[i]; rec1(0,n-1); } int rec2(int l,int r,int L,int R){ int mid=(l+r)>>1; if (l<L)return rec2(l,mid,L,R); if (r>R)return rec2(mid+1,r,L,R); return Secret(pref[mid][l],suf[mid][r]); } int Query(int L,int R){ return rec2(0,n-1,L,R); }
#Verdict Execution timeMemoryGrader output
Fetching results...