Submission #1263944

#TimeUsernameProblemLanguageResultExecution timeMemory
1263944wedonttalkanymoreSecret (JOI14_secret)C++20
0 / 100
635 ms589824 KiB
#include "secret.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

//#define int long long
#define pii pair<ll, ll>
#define fi first
#define se second

const ll N = 1e3 + 5, inf = 1e9, mod = 1e9 + 7, block = 320, lim = 16;

int a[N];
int n;
int dp[N][N];

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

void Init(int N, int A[]) {
	n = N;
	for (int i = 1; i <= n; i++) a[i] = A[i - 1];
	dnc(1, n);
}

int make(int l, int r, int &L, int &R) {
//	if (l == r) return 0;
	int mid = (l + r) / 2;
	if (L <= mid && mid <= R) {
		if (L <= mid) return Secret(dp[L][mid], dp[mid + 1][R]);
		else return dp[mid + 1][R];
	}
	if (R <= mid) return make(l, mid, L, R);
	else return make(mid + 1, r, L, R);
}

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