Submission #1283073

#TimeUsernameProblemLanguageResultExecution timeMemory
1283073Jawad_Akbar_JJSecret (JOI14_secret)C++20
100 / 100
349 ms12900 KiB
#include <iostream>
#include "secret.h"

using namespace std;
const int M = 1100;
int seen[M][M], val[M][M];

int Get(int l, int r){
	if (seen[l][r])
		return val[l][r];
	for (int k=l;k<r;k++)
		if (seen[l][k] and seen[k+1][r])
			return Secret(val[l][k], val[k+1][r]);
}

void count(int l, int r){
	if (r - l <= 1)
		return;
	int mid = (l + r) / 2;
	count(l, mid);
	count(mid, r);

	for (int k=mid-1;k >= l;k--){
		if (seen[k][mid - 1] == 0)
			val[k][mid - 1] = Get(k, mid - 1), seen[k][mid - 1] = 1;
	}

	for (int k=mid;k < r;k++){
		if (seen[mid][k] == 0)
			val[mid][k] = Get(mid, k), seen[mid][k] = 1;
	}
}

void Init(int n, int A[]){
	for (int i=1;i<=n;i++)
		seen[i][i] = 1, val[i][i] = A[i-1];
	count(1, n + 1);
}

int Query(int l, int r){
	return Get(l + 1, r + 1);
}

Compilation message (stderr)

secret.cpp: In function 'int Get(int, int)':
secret.cpp:14:1: warning: control reaches end of non-void function [-Wreturn-type]
   14 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...