Submission #954524

#TimeUsernameProblemLanguageResultExecution timeMemory
954524IBorySecret (JOI14_secret)C++17
0 / 100
388 ms4972 KiB
#include "secret.h"
#include <bits/stdc++.h>
#define pii pair<int, int>
using namespace std;

map<pii, int> D;
int N;

void DnC1(int L, int R) {
    if (L >= R) return;
    int mid = (L + R) >> 1;

    for (int i = mid - 1; i >= L; --i) D[{i, mid}] = Secret(i, mid);
    for (int i = mid + 2; i <= R; ++i) D[{mid, i}] = Secret(mid, i);

    DnC1(L, mid);
    DnC1(mid + 1, R);
}

void Init(int _N, int A[]) {
    N = _N;
    DnC1(0, N - 1);
    for (int i = 0; i < N; ++i) D[{i, i}] = A[i];
}

int DnC2(int L, int R, int s, int e) {
    if (L >= R) return -1;
    int mid = (L + R) >> 1;

    if (s <= mid && mid < e) {
        int a = D[{s, mid}], b = D[{mid + 1, e}];
        return Secret(a, b);
    }

    if (e <= mid) return DnC2(L, mid, s, e);
    else return DnC2(mid + 1, R, s, e);
}


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