Submission #1255936

#TimeUsernameProblemLanguageResultExecution timeMemory
1255936pastaSecret (JOI14_secret)C++20
0 / 100
340 ms9272 KiB
#include <bits/stdc++.h>
using namespace std;
#include "secret.h"


const int maxn = 1000 + 10;
int a[maxn], dp[maxn][maxn];
bool kir[maxn][maxn];


void goh(int l, int r) {
	if (l >= r)
		return;
	int m = (l + r) / 2;
	goh(l, m);
	goh(m + 1, r);
	
	for (int i = m - 1; i >= l; i--) {
		dp[i][m] = Secret(a[i], dp[i + 1][m]);
		kir[i][m] = true;
	}
	for (int i = m + 2; i <= r; i++) {
		dp[m + 1][i] = Secret(a[i], dp[m + 1][i - 1]);
		kir[m + 1][i] = true;
	}
}


void Init(int N, int A[]) {
	for (int i = 0; i < N; i++) {
		dp[i][i] = A[i];
		a[i] = A[i];
		kir[i][i] = true;
	}
	goh(0, N - 1);
}

int Query(int L, int R) {
	int l = L, r = R;
	if (kir[l][r])
		return dp[l][r];
	for (int m = l; m < r; m++) {
		if (kir[l][m] && kir[m + 1][r]) {
			return Secret(dp[l][m], dp[m + 1][r]);
		}
	}
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...