Submission #1292323

#TimeUsernameProblemLanguageResultExecution timeMemory
1292323basaSecret (JOI14_secret)C++20
0 / 100
349 ms12180 KiB
#include "bits/stdc++.h"
#include "secret.h"

using namespace std;

// #define int long long

const int maxn = 1e3 + 5;

int n, a[maxn];
int prel[maxn][maxn], prer[maxn][maxn];

void cmp(int l, int r){
  int mid = (l + r) / 2;
  for(int i = mid; i >= l; i--){
    if(i == mid){
      prel[mid][i] = a[i];
      continue;
    }
    prel[mid][i] = Secret(a[i], prel[mid][i + 1]);
  }

  for(int i = mid + 1; i <= r; i++){
    if(i == mid + 1){
      prer[mid][i] = a[i];
      continue;
    }
    prer[mid][i] = Secret(a[i], prer[mid][i - 1]);
  }

  if(l == mid) return;

  cmp(l, mid);
  cmp(mid + 1, r);
}

int ans;
void solve(int l, int r, int l1, int r1){
  int mid = (l + r) / 2;
  if(l1 > r || r1 < l) return;

  if(l1 <= mid && r1 >= mid){
    ans = Secret(prel[mid][l1], prer[mid][r1]);
    return;
  }

  solve(l, r, l1, mid);
  solve(l, r, mid + 1, r1);
}

void Init(int tmpn, int tmpa[]){
  n = tmpn;
  for(int i = 0; i < n; i++) a[i] = tmpa[i];
  cmp(0, n - 1);
}

int Query(int l, int r){
  ans = 0;
  solve(l - 1, r - 1, 0, n - 1);
  return ans;
}

// signed main()
// {
//   cin.tie(0) -> sync_with_stdio(0);

// }
#Verdict Execution timeMemoryGrader output
Fetching results...