제출 #1291545

#제출 시각아이디문제언어결과실행 시간메모리
1291545ereringSecret (JOI14_secret)C++20
100 / 100
341 ms8328 KiB
#include <bits/stdc++.h>
#include "secret.h"
using namespace std;
int a[1001],mp[1001][1001];
void solve(int l,int r){
    if(l>=r)return;
    int mid=(l+r)/2;
    for(int i=mid-1;i>=l;i--){
        mp[i][mid]=Secret(a[i],mp[i+1][mid]);
    }
    for(int i=mid+2;i<=r;i++){
        mp[mid+1][i]=Secret(mp[mid+1][i-1],a[i]);
    }
    solve(l,mid-1);
    solve(mid+1,r);
}
void Init(int N, int A[]) {
    for(int i=0;i<N;i++){
        a[i]=A[i];
        mp[i][i]=a[i];
    }
    solve(0,N-1);
}

int Query(int L, int R) {
    if(mp[L][R])return mp[L][R];
    for(int i=L;i<R;i++){
        if(mp[L][i] && mp[i+1][R])return Secret(mp[L][i],mp[i+1][R]);
    }
    return -1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...