제출 #1139026

#제출 시각아이디문제언어결과실행 시간메모리
1139026luanzito비밀 (JOI14_secret)C++20
0 / 100
334 ms4436 KiB
#include "secret.h"

int n;
int st[10][1000];

void build(int n, int l, int r, int p, int A[]) {
	
	if(l == r){ 
	    st[p][l] = A[l];
	    return;
	}
	
	int m = (l + r) / 2;
	build(n, l, m, p + 1, A);
	build(n, m + 1, r, p + 1, A);
	
	st[p][m] = A[m];
	st[p][m + 1] = A[m + 1];
	
	for(int i = m - 1; i >= l; i--)
	    st[p][i] = Secret(A[i], st[p][i + 1]);
	   
	for(int i = m + 2; i <= r; i++)
	    st[p][i] = Secret(A[i], st[p][i - 1]);
	
}

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

int solve(int l, int r, int a, int b, int p){
    
    if(l == r) return st[p][l];
    
    int m = (l + r) / 2;
    if(a <= m && b > m) return Secret(st[p][a], st[p][b]);
    if(a <= m) return solve(l, m, a, b, p + 1);
    else return solve(m + 1, r, a, b, p + 1);
    
}

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