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>
#include "jumps.h"
using namespace std;
using ll = long long;
vector<ll> seg, br, d; ll n;
ll qw(ll a, ll b) {
b++;
ll ans = 0;
for (a += n, b += n; a < b; a /= 2, b /= 2) {
if (a % 2) {
ans = max(ans, seg[a]);
a++;
}
if (b % 2) {
b--;
ans = max(ans, seg[b]);
}
}
return ans;
}
ll ind(ll v, ll a, ll b) {
if (a == b) {
return a;
}
ll m = (a + b) / 2;
if (qw(a, m) >= v) {
return ind(v, a, m);
}
return ind(v, m + 1, b);
}
void init(int N, std::vector<int> H) {
n = N;
seg = vector<ll>(2 * n + 1, 0);
//segment setup
for (ll i = 0; i < n; i++) {
seg[i + n] = H[i];
}
for (ll i = n - 1; i > 0; i--) {
seg[i] = max(seg[2 * i], seg[2 * i + 1]);
}
//br setup
br = vector<ll>(n, 0); for (ll i = 0; i < n; i++) { br[i] = i + 1; }
for (ll i = n - 1; i >= 0; i--) {
ll j = i;
while (br[j] != n) {
if (H[i] < H[br[j]]) {
break;
}
j = br[j];
}
br[i] = br[j];
}
//distance
d = vector<ll>(n + 1); d[n] = 0;
for (ll i = n - 1; i >= 0; i--) {
d[i] = d[br[i]] + 1;
}
}
//ind,qw,d
int minimum_jumps(int A, int B, int C, int D) {
ll w=qw(B,C-1);
ll x = ind(w, C, D);
if (w>seg[n+x]){
return -1;
}
if (d[B] > d[x]) {
return d[B] - d[x];
}
return -1;
}
/*#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
ll n; cin >> n;
vector<ll> a(n), r(n);
for (ll i = 0; i < n; i++) {
cin >> a[i];
r[i] = i - 1;
}
for (ll i = 0; i < n; i++) {
ll j = i;
while (r[j] != -1) {
if (a[i] > a[r[j]]) {
break;
}
j = r[j];
}
r[i] = r[j];
cout << r[i] + 1 << '\n';
}
}*/
# | 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... |