Submission #1131115

#TimeUsernameProblemLanguageResultExecution timeMemory
1131115khoavn2008Secret (JOI14_secret)C++20
0 / 100
451 ms4436 KiB
#include "secret.h"
#include <bits/stdc++.h>
using namespace std;
#define FOR(i,l,r) for(int i=(l),_r=(r);i<=_r;i++)
const int LOG = 14, INF = 2e9;
int n, st[10111 * 4];
void update(int u, int v, int id = 1, int l = 1, int r = n){
    if(u < l || r < u)return;
    if(l == r){
        st[id] = v;
        return;
    }
    int mid = (l + r) >> 1;
    update(u,v,id*2,l,mid);
    update(u,v,id*2+1,mid+1,r);
    st[id] = Secret(st[id * 2], st[id * 2 + 1]);
}
int get(int u, int v, int id = 1, int l = 1, int r = n){
    if(v < l || r < u)return -INF;
    if(u <= l && r <= r)return st[id];
    int mid = (l + r) >> 1;
    int LT = get(u,v,id*2,l,mid);
    int RT = get(u,v,id*2+1,mid+1,r);
    if(LT != -INF && RT != -INF)return Secret(LT, RT);
    if(LT == -INF)return RT;
    if(RT == -INF)return LT;
    return -INF;
}
void Init(int N, int A[]) {
    n = N;
    FOR(i,1,n){
        update(i, A[i - 1]);
    }
}
int Query(int L, int R) {
    L++,R++;
    return get(L, R);
}
#Verdict Execution timeMemoryGrader output
Fetching results...