Submission #338617

#TimeUsernameProblemLanguageResultExecution timeMemory
338617BertedSecret (JOI14_secret)C++14
100 / 100
544 ms8428 KiB
#include "secret.h" #include <vector> using namespace std; int N, res[1001][1001], cnt = 0; vector<int> A; void build(int L, int R) { if (L < R) { int M = L + R >> 1; build(L, M); build(M + 1, R); res[M][M] = A[M]; res[M + 1][M + 1] = A[M + 1]; for (int i = M - 1; i >= L; i--) {cnt++; res[i][M] = Secret(A[i], res[i + 1][M]);} for (int i = M + 2; i <= R; i++) {cnt++; res[M + 1][i] = Secret(res[M + 1][i - 1], A[i]);} //cerr << "B: " << L << " " << R << " " << cnt << "\n"; } } int qry(int L, int R, int l, int r) { if (l == r) {return A[l];} else if (L < R) { int M = L + R >> 1; if (r <= M) {return qry(L, M, l, r);} else if (l > M) {return qry(M + 1, R, l, r);} else { //cerr << "Q:" << L << " " << l << " " << R << " " << r << " " << M << " " << res[l][M] << " " << res[M + 1][r] << "\n"; return Secret(res[l][M], res[M + 1][r]); } } } void Init(int N, int A[]) { ::N = N; for (int i = 0; i < N; i++) {::A.push_back(A[i]);} build(0, N - 1); } int Query(int L, int R) { return qry(0, N - 1, L, R); }

Compilation message (stderr)

secret.cpp: In function 'void build(int, int)':
secret.cpp:13:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   13 |   int M = L + R >> 1;
      |           ~~^~~
secret.cpp: In function 'int qry(int, int, int, int)':
secret.cpp:28:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   28 |   int M = L + R >> 1;
      |           ~~^~~
secret.cpp:38:1: warning: control reaches end of non-void function [-Wreturn-type]
   38 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...