제출 #1223527

#제출 시각아이디문제언어결과실행 시간메모리
1223527Jer밀림 점프 (APIO21_jumps)C++20
33 / 100
4040 ms13228 KiB
#include "jumps.h" #include <bits/stdc++.h> #include <vector> using namespace std; const int MAXN = 200005; pair<int, int> con[MAXN]; int n; void init(int N, std::vector<int> H) { n = N; for (int i = 0; i < n; i++) con[i] = {-1, -1}; stack<int> s; // H, ind for (int i = 0; i < n; i++){ while (!s.empty() and H[i] > H[s.top()]) con[s.top()].second = i, s.pop(); if (!s.empty() and H[s.top()] > H[i]) con[i].first = s.top(); s.push(i); } } int minimum_jumps(int A, int B, int C, int D) { set<int> vis; queue<int> q; for (int s = A; s <= B; s++) q.push(s); int l = 0, curr, len; while (!q.empty()) { len = q.size(); for (int z = len; z > 0; z--){ curr = q.front(), q.pop(); if (vis.find(curr) != vis.end()) continue; vis.insert(curr); if (curr >= C and curr <= D) return l; if (con[curr].first != -1) q.push(con[curr].first); if (con[curr].second != -1) q.push(con[curr].second); } l++; } return -1; }
#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...