#include "jumps.h"
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
const int N = 2e5 + 10;
vector<int> nei[N];
int lft[N];
int rgt[N];
int Mn[N];
int seen[N];
void init(int n,vector<int> h){
vector<int> v;
for (int i=0;i<n;i++)
lft[i] = rgt[i] = -1;
for (int i=0;i<n;i++){
while (v.size() > 0 and h[v.back()] < h[i])
rgt[v.back()] = i,v.pop_back();
v.push_back(i);
}
v.clear();
for (int i=n-1;i>=0;i--){
while (v.size() > 0 and h[v.back()] < h[i])
lft[v.back()] = i,v.pop_back();
v.push_back(i);
}
for (int i=0;i<n;i++){
if (lft[i] != -1)
nei[i + 1].push_back(lft[i] + 1);
if (rgt[i] != -1)
nei[i + 1].push_back(rgt[i] + 1);
}
}
int cur = 0;
int minimum_jumps(int A, int B, int C, int D) {
cur++;
queue<int> Q;
for (int i=A+1;i<=B + 1;i++)
Q.push(i),seen[i] = cur,Mn[i] = 0;
while (!Q.empty()){
int u = Q.front();
if (u >= C+1 and u <= D+1)
return Mn[u];
Q.pop();
for (int i : nei[u])
if (seen[i] != cur)
Mn[i] = Mn[u] + 1,Q.push(i);
}
return -1;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
8024 KB |
Output is correct |
2 |
Correct |
3 ms |
8024 KB |
Output is correct |
3 |
Execution timed out |
4072 ms |
14760 KB |
Time limit exceeded |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
8024 KB |
Output is correct |
2 |
Correct |
2 ms |
8024 KB |
Output is correct |
3 |
Correct |
3 ms |
8024 KB |
Output is correct |
4 |
Correct |
2 ms |
8024 KB |
Output is correct |
5 |
Incorrect |
3 ms |
8024 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
8024 KB |
Output is correct |
2 |
Correct |
2 ms |
8024 KB |
Output is correct |
3 |
Correct |
3 ms |
8024 KB |
Output is correct |
4 |
Correct |
2 ms |
8024 KB |
Output is correct |
5 |
Incorrect |
3 ms |
8024 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
8024 KB |
Output is correct |
2 |
Correct |
3 ms |
8024 KB |
Output is correct |
3 |
Correct |
2 ms |
8024 KB |
Output is correct |
4 |
Correct |
2 ms |
8024 KB |
Output is correct |
5 |
Correct |
29 ms |
14336 KB |
Output is correct |
6 |
Correct |
39 ms |
15780 KB |
Output is correct |
7 |
Correct |
19 ms |
12076 KB |
Output is correct |
8 |
Incorrect |
38 ms |
16044 KB |
Output isn't correct |
9 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
8020 KB |
Output is correct |
2 |
Correct |
3 ms |
8024 KB |
Output is correct |
3 |
Correct |
2 ms |
8024 KB |
Output is correct |
4 |
Incorrect |
3109 ms |
20088 KB |
Output isn't correct |
5 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
8020 KB |
Output is correct |
2 |
Correct |
3 ms |
8024 KB |
Output is correct |
3 |
Correct |
2 ms |
8024 KB |
Output is correct |
4 |
Incorrect |
3109 ms |
20088 KB |
Output isn't correct |
5 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
8024 KB |
Output is correct |
2 |
Correct |
3 ms |
8024 KB |
Output is correct |
3 |
Execution timed out |
4072 ms |
14760 KB |
Time limit exceeded |
4 |
Halted |
0 ms |
0 KB |
- |