제출 #1207471

#제출 시각아이디문제언어결과실행 시간메모리
1207471jahongir비밀 (JOI14_secret)C++20
100 / 100
343 ms8308 KiB
#include <bits/stdc++.h>
#include "secret.h"

using namespace std;


int dp[1010][1010], n;

void daq(int l, int r, int A[]){
    int m = (l+r)>>1;
    dp[m][m] = A[m];
    dp[m+1][m+1] = A[m+1];

    for(int i = m+2; i <= r; i++)
        dp[m+1][i] = Secret(dp[m+1][i-1],A[i]);
    for(int i = m-1; i >= l; i--)
        dp[i][m] = Secret(A[i],dp[i+1][m]);

    if(l < m) daq(l,m,A);
    if(r > m+1) daq(m+1,r,A);
}


void Init(int N, int A[]) {
    n = N; daq(0,n-1,A);
}

int Query(int L, int R) {
    int l = 0, r = n-1;

    while(l!=r){
        int m = (l+r)>>1;
        if(m >= L &&  m < R) return Secret(dp[L][m],dp[m+1][R]);
        if(m==R) return dp[L][m];
        if(m < L) l = m+1;
        else r = m;
    }

    return dp[l][r];
}
#Verdict Execution timeMemoryGrader output
Fetching results...