#include "secret.h"
#include<bits/stdc++.h>
using namespace std;
const int mxN=1e3;
int n;
int c[mxN];
int g[mxN][20];
void dc(int l, int r, int k) {
if(l==r) return;
int mid=(l+r)/2;
g[mid][k]=c[mid];
for(int i=mid-1; i>=l; i--) {
g[i][k]=Secret(c[i], g[i+1][k]);
}
g[mid+1][k]=c[mid+1];
for(int i=mid+2; i<=r; i++) {
g[i][k]=Secret(c[i], g[i-1][k]);
}
dc(l, mid, k+1);
dc(mid+1, r, k+1);
}
void Init(int N, int A[]) {
n=N;
for(int i=0; i<N; i++) c[i]=A[i];
dc(0, n-1, 0);
}
int qry(int k, int l, int r, int L, int R) {
int mid=(L+R)/2;
if(l<=mid&&mid<=r) {
return Secret(g[l][k], g[r][k]);
}
if(r<=mid) return qry(k+1, l, r, L, mid);
if(l>mid) return qry(k+1, l, r, mid+1, R);
}
int Query(int L, int R) {
if(L==R) return c[L];
return qry(0, L, R, 0, n-1);
}
Compilation message (stderr)
secret.cpp: In function 'int qry(int, int, int, int, int)':
secret.cpp:39:1: warning: control reaches end of non-void function [-Wreturn-type]
39 | }
| ^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |