제출 #84074

#제출 시각아이디문제언어결과실행 시간메모리
84074Bodo171비밀 (JOI14_secret)C++14
100 / 100
736 ms5612 KiB
#include "secret.h" #include <iostream> const int nmax=1005; using namespace std; int arb[12][nmax]; int v[nmax]; int i,Ll,Rr,ans; void divide(int st,int dr,int lev) { if(st==dr) { arb[lev][st]=v[st]; return; } int m=(st+dr)/2; arb[lev][m]=v[m]; if(m+1<=dr) arb[lev][m+1]=v[m+1]; for(i=m-1;i>=st;i--) arb[lev][i]=Secret(v[i],arb[lev][i+1]); for(i=m+2;i<=dr;i++) arb[lev][i]=Secret(arb[lev][i-1],v[i]); divide(st,m,lev+1); divide(m+1,dr,lev+1); } int n; void Init(int N, int A[]) { n=N; for(i=0;i<N;i++) v[i+1]=A[i]; divide(1,N,0); } void query(int st,int dr,int lev) { int m=(st+dr)/2; if(Ll<=m&&m<Rr) { ans=Secret(arb[lev][Ll],arb[lev][Rr]); return; } if(Ll<=m) query(st,m,lev+1); else query(m+1,dr,lev+1); } int Query(int L, int R) { L++,R++; if(L==R) return v[L]; Ll=L;Rr=R; query(1,n,0); return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...