# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
569942 | toastifishi | Rainforest Jumps (APIO21_jumps) | C++14 | 1084 ms | 50592 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2e5 + 5;
const int MAXLG = 20;
int n, heights[MAXN];
int L[MAXN][MAXLG], R[MAXN][MAXLG], high[MAXN][MAXLG];
void init(int N, vector<int> H) {
n = N;
heights[0] = heights[n + 1] = 1e9;
for(int i = 0; i < n; i++) heights[i + 1] = H[i];
vector <int> ii; ii.push_back(0);
for(int i = 1; i <= n; i++) {
while(heights[ii.back()] < heights[i]) ii.pop_back();
L[i][0] = ii.back();
ii.push_back(i);
}
ii.clear(); ii.push_back(n + 1);
for(int i = n; i >= 1; i--) {
while(heights[ii.back()] < heights[i]) ii.pop_back();
R[i][0] = ii.back();
ii.push_back(i);
high[i][0] = ((heights[L[i][0]] > heights[R[i][0]] ? L[i][0] : R[i][0]));
}
R[n + 1][0] = n + 1;
for(int p = 1; p <= 19; p++) {
R[n + 1][p] = n + 1;
for(int i = 1; i <= n; i++) {
L[i][p] = L[L[i][p - 1]][p - 1];
R[i][p] = R[R[i][p - 1]][p - 1];
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |