#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
const int N = 2e5 + 7;
const int LG = 19;
const int INF = 1e9;
int n, h[N];
int go_l[N], go_r[N], go_mx[N];
int bin_l[LG][N], bin_r[LG][N], bin_mx[LG][N];
int lg[N];
int sparse[LG][N];
int get_max(int l, int r) {
if (l >= r) return -INF;
int t = lg[r - l];
return max(sparse[t][l], sparse[t][r - (1 << t)]);
}
void build() {
vector<int> st;
for (int i = 0; i < n; ++i) {
while (!st.empty() && h[st.back()] < h[i]) {
go_r[st.back()] = i;
st.pop_back();
}
st.push_back(i);
}
st.clear();
go_r[n - 1] = n - 1;
for (int i = n - 1; i >= 0; --i) {
while (!st.empty() && h[st.back()] < h[i]) {
go_l[st.back()] = i;
st.pop_back();
}
st.push_back(i);
}
st.clear();
go_l[0] = 0;
for (int i = 0; i < n; ++i) {
if (h[go_l[i]] > h[go_r[i]]) go_mx[i] = go_l[i]; else go_mx[i] = go_r[i];
}
for (int i = 0; i < n; ++i) {
bin_l[0][i] = go_l[i];
bin_r[0][i] = go_r[i];
bin_mx[0][i] = go_mx[i];
sparse[0][i] = h[i];
}
for (int t = 1; t < LG; ++t) {
for (int i = 0; i < n; ++i) {
bin_l[t][i] = bin_l[t - 1][bin_l[t - 1][i]];
bin_r[t][i] = bin_r[t - 1][bin_r[t - 1][i]];
bin_mx[t][i] = bin_mx[t - 1][bin_mx[t - 1][i]];
if (i + (1 << t) <= n) sparse[t][i] = max(sparse[t - 1][i], sparse[t - 1][i + (1 << (t - 1))]);
}
}
lg[0] = lg[1] = 0;
for (int i = 2; i <= n; ++i) lg[i] = lg[i >> 1] + 1;
}
void init(int n2, vector<int> h2) {
for (int i = 1; i <= n2; ++i) h[i] = h2[i - 1] - 1;
h[0] = n2;
h[n2 + 1] = n2 + 1;
n = n2 + 2;
build();
}
int minimum_jumps(int A, int B, int C, int D) {
int a = A + 1, b = B + 2, c = C + 1, d = D + 2;
int mx = get_max(c, d);
int v = b - 1;
for (int i = LG - 1; i >= 0; --i) {
if (bin_l[i][v] >= a && h[bin_l[i][v]] < mx) v = bin_l[i][v];
}
int mx2 = get_max(b, c);
int res = 0;
for (int i = LG - 1; i >= 0; --i) {
if (h[bin_mx[i][v]] < mx2) {
res += (1 << i);
v = bin_mx[i][v];
}
}
if (h[go_mx[v]] >= mx2 && h[go_mx[v]] <= mx) {
++res;
v = go_mx[v];
}
for (int i = LG - 1; i >= 0; --i) {
if (bin_r[i][v] < c) {
v = bin_r[i][v];
res += (1 << i);
}
}
if (v >= c && v < d) return res;
if (go_r[v] >= c && go_r[v] < d) return res + 1;
return -1;
}
#ifdef LOCAL
int main() {
freopen("input.txt", "r", stdin);
ios::sync_with_stdio(false);
cin.tie(0);
int n2, q2;
cin >> n2 >> q2;
vector<int> h2(n2);
for (auto &i : h2) cin >> i;
init(n2, h2);
while (q2--) {
int A, B, C, D;
cin >> A >> B >> C >> D;
cout << minimum_jumps(A, B, C, D) << endl;
}
return 0;
}
#endif
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
584 KB |
Output is correct |
2 |
Correct |
2 ms |
584 KB |
Output is correct |
3 |
Correct |
161 ms |
51348 KB |
Output is correct |
4 |
Correct |
1616 ms |
64288 KB |
Output is correct |
5 |
Correct |
1174 ms |
32520 KB |
Output is correct |
6 |
Correct |
1951 ms |
64348 KB |
Output is correct |
7 |
Correct |
1425 ms |
44032 KB |
Output is correct |
8 |
Correct |
1420 ms |
64292 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
584 KB |
Output is correct |
2 |
Correct |
1 ms |
584 KB |
Output is correct |
3 |
Correct |
1 ms |
584 KB |
Output is correct |
4 |
Correct |
1 ms |
584 KB |
Output is correct |
5 |
Correct |
2 ms |
584 KB |
Output is correct |
6 |
Incorrect |
4 ms |
712 KB |
Output isn't correct |
7 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
584 KB |
Output is correct |
2 |
Correct |
1 ms |
584 KB |
Output is correct |
3 |
Correct |
1 ms |
584 KB |
Output is correct |
4 |
Correct |
1 ms |
584 KB |
Output is correct |
5 |
Correct |
2 ms |
584 KB |
Output is correct |
6 |
Incorrect |
4 ms |
712 KB |
Output isn't correct |
7 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
584 KB |
Output is correct |
2 |
Correct |
1 ms |
584 KB |
Output is correct |
3 |
Correct |
1 ms |
584 KB |
Output is correct |
4 |
Correct |
1 ms |
584 KB |
Output is correct |
5 |
Correct |
75 ms |
51136 KB |
Output is correct |
6 |
Correct |
87 ms |
63476 KB |
Output is correct |
7 |
Correct |
38 ms |
32568 KB |
Output is correct |
8 |
Correct |
92 ms |
63404 KB |
Output is correct |
9 |
Correct |
15 ms |
9764 KB |
Output is correct |
10 |
Correct |
88 ms |
63384 KB |
Output is correct |
11 |
Correct |
84 ms |
64308 KB |
Output is correct |
12 |
Correct |
70 ms |
64180 KB |
Output is correct |
13 |
Correct |
78 ms |
64056 KB |
Output is correct |
14 |
Correct |
74 ms |
63388 KB |
Output is correct |
15 |
Correct |
90 ms |
64008 KB |
Output is correct |
16 |
Correct |
86 ms |
64280 KB |
Output is correct |
17 |
Correct |
80 ms |
64268 KB |
Output is correct |
18 |
Correct |
1 ms |
584 KB |
Output is correct |
19 |
Correct |
2 ms |
712 KB |
Output is correct |
20 |
Correct |
1 ms |
712 KB |
Output is correct |
21 |
Correct |
2 ms |
712 KB |
Output is correct |
22 |
Incorrect |
1 ms |
712 KB |
Output isn't correct |
23 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
584 KB |
Output is correct |
2 |
Correct |
1 ms |
584 KB |
Output is correct |
3 |
Correct |
2 ms |
584 KB |
Output is correct |
4 |
Correct |
392 ms |
29040 KB |
Output is correct |
5 |
Correct |
1556 ms |
63376 KB |
Output is correct |
6 |
Correct |
890 ms |
10700 KB |
Output is correct |
7 |
Correct |
1411 ms |
63388 KB |
Output is correct |
8 |
Correct |
879 ms |
21960 KB |
Output is correct |
9 |
Correct |
1194 ms |
63396 KB |
Output is correct |
10 |
Correct |
1711 ms |
64400 KB |
Output is correct |
11 |
Correct |
1535 ms |
64288 KB |
Output is correct |
12 |
Correct |
1390 ms |
64268 KB |
Output is correct |
13 |
Correct |
1336 ms |
63424 KB |
Output is correct |
14 |
Correct |
1439 ms |
63936 KB |
Output is correct |
15 |
Correct |
1435 ms |
64324 KB |
Output is correct |
16 |
Correct |
1261 ms |
64288 KB |
Output is correct |
17 |
Correct |
1 ms |
584 KB |
Output is correct |
18 |
Correct |
1 ms |
584 KB |
Output is correct |
19 |
Correct |
4 ms |
584 KB |
Output is correct |
20 |
Correct |
5 ms |
712 KB |
Output is correct |
21 |
Correct |
5 ms |
712 KB |
Output is correct |
22 |
Correct |
4 ms |
712 KB |
Output is correct |
23 |
Correct |
4 ms |
712 KB |
Output is correct |
24 |
Correct |
8 ms |
712 KB |
Output is correct |
25 |
Correct |
1 ms |
712 KB |
Output is correct |
26 |
Correct |
4 ms |
840 KB |
Output is correct |
27 |
Correct |
28 ms |
1224 KB |
Output is correct |
28 |
Correct |
26 ms |
1284 KB |
Output is correct |
29 |
Correct |
19 ms |
1224 KB |
Output is correct |
30 |
Correct |
22 ms |
1224 KB |
Output is correct |
31 |
Correct |
47 ms |
1224 KB |
Output is correct |
32 |
Correct |
1 ms |
584 KB |
Output is correct |
33 |
Correct |
50 ms |
36832 KB |
Output is correct |
34 |
Correct |
72 ms |
63404 KB |
Output is correct |
35 |
Correct |
84 ms |
64248 KB |
Output is correct |
36 |
Correct |
91 ms |
63424 KB |
Output is correct |
37 |
Correct |
71 ms |
63928 KB |
Output is correct |
38 |
Correct |
73 ms |
64376 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
584 KB |
Output is correct |
2 |
Correct |
1 ms |
584 KB |
Output is correct |
3 |
Correct |
2 ms |
584 KB |
Output is correct |
4 |
Correct |
392 ms |
29040 KB |
Output is correct |
5 |
Correct |
1556 ms |
63376 KB |
Output is correct |
6 |
Correct |
890 ms |
10700 KB |
Output is correct |
7 |
Correct |
1411 ms |
63388 KB |
Output is correct |
8 |
Correct |
879 ms |
21960 KB |
Output is correct |
9 |
Correct |
1194 ms |
63396 KB |
Output is correct |
10 |
Correct |
1711 ms |
64400 KB |
Output is correct |
11 |
Correct |
1535 ms |
64288 KB |
Output is correct |
12 |
Correct |
1390 ms |
64268 KB |
Output is correct |
13 |
Correct |
1336 ms |
63424 KB |
Output is correct |
14 |
Correct |
1439 ms |
63936 KB |
Output is correct |
15 |
Correct |
1435 ms |
64324 KB |
Output is correct |
16 |
Correct |
1261 ms |
64288 KB |
Output is correct |
17 |
Correct |
1 ms |
584 KB |
Output is correct |
18 |
Correct |
1 ms |
584 KB |
Output is correct |
19 |
Correct |
4 ms |
584 KB |
Output is correct |
20 |
Correct |
5 ms |
712 KB |
Output is correct |
21 |
Correct |
5 ms |
712 KB |
Output is correct |
22 |
Correct |
4 ms |
712 KB |
Output is correct |
23 |
Correct |
4 ms |
712 KB |
Output is correct |
24 |
Correct |
8 ms |
712 KB |
Output is correct |
25 |
Correct |
1 ms |
712 KB |
Output is correct |
26 |
Correct |
4 ms |
840 KB |
Output is correct |
27 |
Correct |
28 ms |
1224 KB |
Output is correct |
28 |
Correct |
26 ms |
1284 KB |
Output is correct |
29 |
Correct |
19 ms |
1224 KB |
Output is correct |
30 |
Correct |
22 ms |
1224 KB |
Output is correct |
31 |
Correct |
47 ms |
1224 KB |
Output is correct |
32 |
Correct |
1 ms |
584 KB |
Output is correct |
33 |
Correct |
50 ms |
36832 KB |
Output is correct |
34 |
Correct |
72 ms |
63404 KB |
Output is correct |
35 |
Correct |
84 ms |
64248 KB |
Output is correct |
36 |
Correct |
91 ms |
63424 KB |
Output is correct |
37 |
Correct |
71 ms |
63928 KB |
Output is correct |
38 |
Correct |
73 ms |
64376 KB |
Output is correct |
39 |
Correct |
1 ms |
584 KB |
Output is correct |
40 |
Correct |
1 ms |
584 KB |
Output is correct |
41 |
Correct |
1 ms |
584 KB |
Output is correct |
42 |
Correct |
319 ms |
29040 KB |
Output is correct |
43 |
Correct |
1147 ms |
63424 KB |
Output is correct |
44 |
Correct |
1052 ms |
10684 KB |
Output is correct |
45 |
Correct |
1402 ms |
63424 KB |
Output is correct |
46 |
Correct |
611 ms |
21912 KB |
Output is correct |
47 |
Correct |
1452 ms |
63388 KB |
Output is correct |
48 |
Correct |
1176 ms |
64412 KB |
Output is correct |
49 |
Correct |
1417 ms |
64316 KB |
Output is correct |
50 |
Correct |
1422 ms |
64272 KB |
Output is correct |
51 |
Correct |
1091 ms |
63424 KB |
Output is correct |
52 |
Correct |
1469 ms |
63888 KB |
Output is correct |
53 |
Correct |
1320 ms |
64348 KB |
Output is correct |
54 |
Correct |
1217 ms |
64308 KB |
Output is correct |
55 |
Correct |
1 ms |
584 KB |
Output is correct |
56 |
Correct |
167 ms |
63424 KB |
Output is correct |
57 |
Correct |
1660 ms |
63404 KB |
Output is correct |
58 |
Correct |
870 ms |
11396 KB |
Output is correct |
59 |
Correct |
1605 ms |
63404 KB |
Output is correct |
60 |
Correct |
538 ms |
22556 KB |
Output is correct |
61 |
Correct |
1693 ms |
63400 KB |
Output is correct |
62 |
Correct |
1460 ms |
64268 KB |
Output is correct |
63 |
Correct |
1246 ms |
64144 KB |
Output is correct |
64 |
Correct |
1596 ms |
64056 KB |
Output is correct |
65 |
Correct |
1408 ms |
63408 KB |
Output is correct |
66 |
Correct |
1914 ms |
63924 KB |
Output is correct |
67 |
Correct |
1659 ms |
64376 KB |
Output is correct |
68 |
Correct |
1667 ms |
64308 KB |
Output is correct |
69 |
Correct |
1 ms |
584 KB |
Output is correct |
70 |
Correct |
3 ms |
584 KB |
Output is correct |
71 |
Correct |
6 ms |
712 KB |
Output is correct |
72 |
Correct |
3 ms |
712 KB |
Output is correct |
73 |
Correct |
6 ms |
712 KB |
Output is correct |
74 |
Correct |
3 ms |
712 KB |
Output is correct |
75 |
Correct |
4 ms |
712 KB |
Output is correct |
76 |
Correct |
1 ms |
584 KB |
Output is correct |
77 |
Correct |
1 ms |
584 KB |
Output is correct |
78 |
Correct |
3 ms |
584 KB |
Output is correct |
79 |
Correct |
3 ms |
712 KB |
Output is correct |
80 |
Correct |
4 ms |
712 KB |
Output is correct |
81 |
Correct |
5 ms |
712 KB |
Output is correct |
82 |
Correct |
3 ms |
712 KB |
Output is correct |
83 |
Correct |
4 ms |
712 KB |
Output is correct |
84 |
Correct |
1 ms |
712 KB |
Output is correct |
85 |
Correct |
7 ms |
712 KB |
Output is correct |
86 |
Correct |
23 ms |
1224 KB |
Output is correct |
87 |
Correct |
33 ms |
1224 KB |
Output is correct |
88 |
Correct |
19 ms |
1224 KB |
Output is correct |
89 |
Correct |
14 ms |
1340 KB |
Output is correct |
90 |
Correct |
18 ms |
1224 KB |
Output is correct |
91 |
Correct |
1 ms |
712 KB |
Output is correct |
92 |
Correct |
2 ms |
840 KB |
Output is correct |
93 |
Correct |
24 ms |
1180 KB |
Output is correct |
94 |
Correct |
23 ms |
1224 KB |
Output is correct |
95 |
Correct |
32 ms |
1224 KB |
Output is correct |
96 |
Correct |
19 ms |
1224 KB |
Output is correct |
97 |
Correct |
31 ms |
1188 KB |
Output is correct |
98 |
Correct |
1 ms |
584 KB |
Output is correct |
99 |
Correct |
79 ms |
63376 KB |
Output is correct |
100 |
Correct |
104 ms |
63424 KB |
Output is correct |
101 |
Correct |
88 ms |
64184 KB |
Output is correct |
102 |
Correct |
78 ms |
63372 KB |
Output is correct |
103 |
Correct |
70 ms |
63876 KB |
Output is correct |
104 |
Correct |
97 ms |
64400 KB |
Output is correct |
105 |
Correct |
1 ms |
584 KB |
Output is correct |
106 |
Correct |
50 ms |
36764 KB |
Output is correct |
107 |
Correct |
80 ms |
63376 KB |
Output is correct |
108 |
Correct |
71 ms |
64160 KB |
Output is correct |
109 |
Correct |
96 ms |
63376 KB |
Output is correct |
110 |
Correct |
73 ms |
63888 KB |
Output is correct |
111 |
Correct |
92 ms |
64404 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
584 KB |
Output is correct |
2 |
Correct |
2 ms |
584 KB |
Output is correct |
3 |
Correct |
161 ms |
51348 KB |
Output is correct |
4 |
Correct |
1616 ms |
64288 KB |
Output is correct |
5 |
Correct |
1174 ms |
32520 KB |
Output is correct |
6 |
Correct |
1951 ms |
64348 KB |
Output is correct |
7 |
Correct |
1425 ms |
44032 KB |
Output is correct |
8 |
Correct |
1420 ms |
64292 KB |
Output is correct |
9 |
Correct |
1 ms |
584 KB |
Output is correct |
10 |
Correct |
1 ms |
584 KB |
Output is correct |
11 |
Correct |
1 ms |
584 KB |
Output is correct |
12 |
Correct |
1 ms |
584 KB |
Output is correct |
13 |
Correct |
2 ms |
584 KB |
Output is correct |
14 |
Incorrect |
4 ms |
712 KB |
Output isn't correct |
15 |
Halted |
0 ms |
0 KB |
- |