Submission #707994

#TimeUsernameProblemLanguageResultExecution timeMemory
707994Dan4LifeSecret (JOI14_secret)C++17
0 / 100
443 ms8216 KiB
#include "secret.h"
#include <bits/stdc++.h>
using namespace std;

const int mxN = 1010;
int n, ans[mxN][mxN];

void dnc(int l, int r){
    if(l==r) return;
    int m = (l+r)/2;
    for(int i = m-1; i>=l; i--) ans[i][m] = Secret(ans[i][i],ans[i+1][m]);
    for(int i = m+2; i<=r; i++) ans[m+1][i] = Secret(ans[i][i],ans[m+1][i-1]);
    dnc(l,m), dnc(m+1,r);
}

int dnc2(int l, int r, int L, int R){
    if(l==r) return ans[l][r];
    int m = (l+r)/2;
    if(L<=m and m<R)
        return Secret(ans[l][m],ans[m+1][r]);
    if(m<L) return dnc2(l,m,L,R);
    return dnc2(m+1,r,L,R);
}

void Init(int N, int A[]) {
    for(int i = 0; i < N; i++)
        ans[i][i]=A[i];
    dnc(0,N-1); n=N;
}

int Query(int L, int R) {
    if(L==R) return ans[L][L];
    return dnc2(0,n-1,L,R);
}
#Verdict Execution timeMemoryGrader output
Fetching results...