제출 #1365800

#제출 시각아이디문제언어결과실행 시간메모리
1365800vahagng비밀 (JOI14_secret)C++20
100 / 100
293 ms12260 KiB
#include "secret.h"
#include <bits/stdc++.h>
// #include <sys/resource.h>
using namespace std;

int n, a[1001], suff[1001][1001], pref[1001][1001];

void build(int l, int r){
  if(r - l == 1){
    return;
  }
  int m = (l + r) / 2;
  build(l, m);
  build(m, r);
  suff[m - 1][m - 1] = a[m - 1];
  for(int i = m - 2; i >= l; i--){
    suff[i][m - 1] = Secret(a[i], suff[i + 1][m - 1]);
  }
  pref[m][m] = a[m];
  for(int i = m + 1; i < r; i++){
    pref[m][i] = Secret(pref[m][i - 1], a[i]);
  }
}

void Init(int N, int A[]) {
  n = N;
  for(int i = 0; i < N; i++){
    a[i] = A[i];
  }
  for(int i = 0; i < N; i++){
    for(int j = 0; j < N; j++){
      pref[i][j] = suff[i][j] = -1;
    }
  }
  build(0, n + 1);
}

int Query(int L, int R) {
  int l = 0, r = n;
  if(suff[L][R] != -1) return suff[L][R];
  if(pref[L][R] != -1) return pref[L][R];
  for(int i = L; i < R; i++){
    if(suff[L][i] != -1 && pref[i + 1][R] != -1){
      return Secret(suff[L][i], pref[i + 1][R]);
    }
  }
  return -1;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…