제출 #1189129

#제출 시각아이디문제언어결과실행 시간메모리
1189129qrn비밀 (JOI14_secret)C++20
30 / 100
396 ms4448 KiB
#include "secret.h"
#include <bits/stdc++.h>
using namespace std;
#define intt int
#define pb push_back
const intt mxN = 2e3 + 31;
vector<intt> seg(4 * mxN);
intt a[mxN], border;
// secret_count, MAX_VALUE = 1000000000;

void build(intt node, intt l, intt r) {
  if(l == r) {
    seg[node] = a[l];
    return;
  }

  intt mid = (l + r) / 2;
  build(node * 2, l, mid);
  build(node * 2 + 1, mid + 1, r);
  seg[node] = Secret(seg[node * 2], seg[node * 2 + 1]);
}

intt ret = 0;
intt get(intt node, intt l, intt r, intt ql, intt qr) {
  if(ql > r || qr < l || ql > qr) return -1;
  if(ql <= l && r <= qr) {
    return seg[node];
  }
  intt mid = (l + r) / 2;
  intt sol = get(node * 2, l, mid, ql, qr);
  intt sag = get(node * 2 + 1, mid + 1, r, ql, qr);
  if(sol == -1) return sag;
  if(sag == -1) return sol;
  return Secret(sol, sag);
}

void Init(int N, int A[]) {
  for(intt i = 0; i < N; i++) {
    a[i] = A[i];
  }
  build(1, 0, N - 1);
  border = N - 1;
}

int Query(int L, int R) {
  return get(1, 0, border, L, R);
}
#Verdict Execution timeMemoryGrader output
Fetching results...