#include"secret.h"
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1024;
struct range { int l,mid,r;vector<int> va,vb; };
range RR[MAXN];
int val[MAXN],cnt=0;
void dnc(int l,int r)
{
if(r-l<=1) return ;
int mid=(l+r)/2;
dnc(l,mid);
dnc(mid+1,r);
vector<int> va,vb;
int x=0,y=0;
for(int i=mid;i>=l;i--)
{
if(i==mid) x=val[i];
else x=Secret(val[i],x);
va.push_back(x);
}
for(int i=mid+1;i<=r;i++)
{
if(i==mid+1) y=val[i];
else y=Secret(y,val[i]);
vb.push_back(y);
}
reverse(va.begin(),va.end());
RR[++cnt]={l,mid,r,va,vb};
}
void Init(int N,int A[])
{
for(int i=0;i<N;i++) val[i]=A[i];
dnc(0,N-1);
}
int Query(int l,int r)
{
if(l==r) return val[l];
if(l+1==r) return Secret(val[l],val[r]);
for(int i=1;i<=cnt;i++) if(RR[i].l<=l&&l<=RR[i].mid&&RR[i].mid<r&&r<=RR[i].r) return Secret(RR[i].va[l-RR[i].l],RR[i].vb[r-(RR[i].mid+1)]);
}
Compilation message (stderr)
secret.cpp: In function 'int Query(int, int)':
secret.cpp:41:1: warning: control reaches end of non-void function [-Wreturn-type]
41 | }
| ^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |