Submission #1064960

#TimeUsernameProblemLanguageResultExecution timeMemory
1064960DeathIsAweSecret (JOI14_secret)C++14
0 / 100
324 ms8320 KiB
#include "secret.h" #include <bits/stdc++.h> using namespace std; int bollocks[1000][1000], divider[129], arr[1000], en; void solve(int x, int y) { int mid = (x + y) / 2; bollocks[mid][mid] = arr[mid]; bollocks[mid + 1][mid + 1] = arr[mid + 1]; for (int i = mid - 1; i >= x; i--) { bollocks[i][mid] = Secret(arr[i], bollocks[i + 1][mid]); } for (int i = mid + 2; i <= y; i++) { bollocks[mid + 1][i] = Secret(bollocks[mid + 1][i - 1], arr[i]); } if (x < mid) { solve(x, mid); } if (y > mid + 1) { solve(mid + 1, y); } } void Init(int n, int a[]) { en = n; for (int i=0;i<n;i++) { arr[i] = a[i]; } solve(0, n - 1); } int Query(int L, int R) { if (L == R) { return arr[L]; } int top = en - 1, bottom = 0, mid; while (true) { mid = (top + bottom) / 2; if (L > mid + 1) { bottom = mid; } else if (R < mid) { top = mid; } else { break; } } if (R == mid) { return bollocks[L][R]; } else if (L == mid + 1) { return bollocks[L][R]; } else { return Secret(bollocks[L][mid], bollocks[mid + 1][R]); } }
#Verdict Execution timeMemoryGrader output
Fetching results...