이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "jumps.h"
#include <vector>
#include <iostream>
#include <math.h>
#include <stack>
#include <cassert>
using namespace std;
const int LOG = 20;
int pl[int(3e5)], pr[int(3e5)];
int high[int(3e5)][LOG], low[int(3e5)][LOG];
int H[int(3e5)];
void init(int N, vector<int> a) {
for (int &i : a) i--;
for (int i = 0 ; i < N ; ++ i) H[i] = a[i];
H[N] = N;
stack<int>st;
for (int i = 0 ; i < N ; ++ i) {
while (st.size() && H[st.top()] < H[i]) st.pop();
pl[H[i]] = st.size() ? H[st.top()] : N;
st.push(i);
}
while (st.size()) st.pop();
for (int i = N - 1 ; i >= 0 ; -- i) {
while (st.size() && H[st.top()] < H[i]) st.pop();
pr[H[i]] = st.size() ? H[st.top()] : N;
st.push(i);
}
pl[N] = pr[N] = N;
for (int i = 0 ; i <= N ; ++ i) {
high[i][0] = max(pl[i], pr[i]);
low[i][0] = min(pl[i], pr[i]);
}
for (int j = 1 ; j < LOG ; ++ j) {
for (int i = 0 ; i <= N ; ++ i) {
{
int where = high[i][j - 1];
high[i][j] = max(high[where][j - 1], high[where][j - 1]);
}
{
int where = low[i][j - 1];
low[i][j] = min(low[where][j - 1], low[where][j - 1]);
}
}
}
}
int minimum_jumps(int A, int B, int C, int D) {
assert(A == B && C == D);
int s = H[A], t = H[C];
int ans = 0;
for (int i = LOG - 1 ; i >= 0 ; -- i) {
if (high[s][i] <= t) {
ans += 1 << i;
s = high[s][i];
}
}
for (int i = LOG - 1 ; i >= 0 ; -- i) {
if (low[s][i] <= t) {
ans += 1 << i;
s = low[s][i];
}
}
if (s != t) return -1;
return ans;
}
# | 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... |