제출 #478173

#제출 시각아이디문제언어결과실행 시간메모리
478173khoabright밀림 점프 (APIO21_jumps)C++17
0 / 100
1 ms200 KiB
#include <bits/stdc++.h> using namespace std; #define ff first #define ss second #define pii pair<int, int> #define all(x) x.begin(), x.end() #define rep(i, a, b) for (int i = (int)a; i <= (int)b; ++i) #define rep1(i, a, b) for (int i = (int)a; i >= (int)b; --i) #define mp make_pair const int N = 2e5 + 5; int L[N], R[N], h[N]; int n; void cal_LR() { rep(i, 1, n) { rep1(j, i - 1, 1) if (h[j] > h[i]) { L[i] = j; break; } rep(j, i + 1, n) if (h[j] > h[i]) { R[i] = j; break; } } } int minimum_jumps(int a, int b, int c, int d) { queue<pii> q; vector<bool> vst(n + 1); vst[0] = 1; rep(i, a, b) q.push({i, 0}), vst[i] = 1; while (!q.empty()) { auto [u, w] = q.front(); q.pop(); if (c <= u && u <= d) return w; int v = L[u]; if (!vst[v]) { q.push({v, w + 1}); vst[v] = 1; } v = R[u]; if (!vst[v]) { q.push({v, w + 1}); vst[v] = 1; } } return -1; } void init(int sz, vector<int> array) { n = sz; rep(i, 1, n) h[i] = array[i - 1]; cal_LR(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...