Submission #1139008

#TimeUsernameProblemLanguageResultExecution timeMemory
1139008luanzitoSecret (JOI14_secret)C++20
6 / 100
350 ms4468 KiB
#include "secret.h"

int n;
int v[10000], st[20][10000];

void build(int n2, int A[]) {
	n = n2;
	for (int i = 0; i < n; i++) v[i] = A[i];
	while (n&(n-1)) n++;
	for (int j = 0; (1<<j) < n; j++) {
		int len = 1<<j;
		for (int c = len; c < n; c += 2*len) {
			st[j][c] = v[c], st[j][c-1] = v[c-1];
			for (int i = c+1; i <  c+len; i++) st[j][i] = Secret(st[j][i-1], v[i]);
			for (int i = c-2; i >= c-len; i--) st[j][i] = Secret(v[i], st[j][i+1]);
		}
	}
}

void Init(int N, int A[]){
    build(N, A);
}

int Query(int L, int R){
  if (L == R) return v[L];
	int j = __builtin_clz(1) - __builtin_clz(L^R);
	return Secret(st[j][L], st[j][R]);
}
#Verdict Execution timeMemoryGrader output
Fetching results...