제출 #1357904

#제출 시각아이디문제언어결과실행 시간메모리
1357904nagorn_ph비밀 (JOI14_secret)C++20
30 / 100
336 ms4420 KiB
#include "secret.h"
#include <bits/stdc++.h>
#define pii pair <int, int>
#define emb emplace_back
#define all(a) a.begin(), a.end()

using namespace std;

const int N = 1005;

int n, a[N];

struct {
    int seg[4 * N];
    void build(int l, int r, int i){
        if (l == r) return seg[i] = a[l], void();
        int mid = (l + r) / 2;
        build(l, mid, 2 * i), build(mid + 1, r, 2 * i + 1);
        seg[i] = Secret(seg[2 * i], seg[2 * i + 1]);
    }
    int query(int l, int r, int i, int ll, int rr){
        if (l >= ll && r <= rr) return seg[i];
        if (r < ll || l > rr) return -1;
        int mid = (l + r) / 2;
        int left = query(l, mid, 2 * i, ll, rr), right = query(mid + 1, r, 2 * i + 1, ll, rr);
        int cur = -1;
        if (left < 0) cur = right;
        else if (right < 0) cur = left;
        else cur = Secret(left, right);
        return cur;
    }
} seg;

void Init(int Nn, int A[]) {
    n = Nn;
    for (int i = 1; i <= n; i++) a[i] = A[i - 1];
    seg.build(1, n, 1);
}

int Query(int L, int R) {
    L++, R++;
    return seg.query(1, n, 1, L, R);
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…