제출 #1188095

#제출 시각아이디문제언어결과실행 시간메모리
1188095petezaSecret (JOI14_secret)C++20
100 / 100
343 ms8336 KiB
#include "secret.h"

int AA[1005];
int val[1005][1005];
int n;

void rec(int l, int r) {
  if(l == r) return;
  int mid = (l+r) >> 1;
  for(int j=mid+2;j<=r;j++) val[mid+1][j] = Secret(val[mid+1][j-1], AA[j]);
  for(int j=mid-1;j>=l;j--) val[j][mid] = Secret(AA[j], val[j+1][mid]);
  rec(l, mid); rec(mid+1, r);
}

void Init(int N, int A[]) {
  n = N;
  for(int i=0;i<N;i++) val[i][i] = AA[i] = A[i];
  rec(0, N-1);
  //Secret(0, 1000000000);
}

int qr(int l, int r, int tl, int tr) {
  int mid = (l+r) >> 1;
  if(tl == mid+1) return val[tl][tr];
  if(tr == mid) return val[tl][tr];
  if(tr < mid) return qr(l, mid, tl, tr);
  if(mid+1 < tl) return qr(mid+1, r, tl, tr);
  return Secret(val[tl][mid], val[mid+1][tr]);
}

int Query(int L, int R) {
  if(L == R) return val[L][R];
  return qr(0, n-1, L, R);
}
#Verdict Execution timeMemoryGrader output
Fetching results...