제출 #980403

#제출 시각아이디문제언어결과실행 시간메모리
980403vjudge1Rainforest Jumps (APIO21_jumps)C++17
0 / 100
2946 ms13912 KiB
#include <bits/stdc++.h> using namespace std; // #define int long long #define fastio ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); #define nl "\n" const int maxn = 200005; vector<int> adj[maxn]; //left, right int dist[maxn]; void init(int N, vector<int> H){ for (int i=0; i<=N; i++) dist[i] = INT_MAX; stack<int> tree; for(int i=0; i<N; i++){ while(!tree.empty() && H[tree.top()]<H[i]) tree.pop(); if(!tree.empty()) adj[i].push_back(tree.top()); tree.push(i); } while(!tree.empty()) tree.pop(); for(int i=N-1; i>=0; i--){ while(!tree.empty() && H[tree.top()]<H[i]) tree.pop(); if(!tree.empty()) adj[i].push_back(tree.top()); tree.push(i); } } int minimum_jumps(int A, int B, int C, int D){ queue<int> q; for (int i=A; i<=B; i++) { q.push(i); dist[i] = 0; } while(!q.empty()){ int v = q.front(); q.pop(); // if(C<=v && v<=D){ // return dist[v]; // } for (auto i : adj[v]){ if(dist[i]>dist[v]+1){ dist[i] = dist[v]+1; q.push(i); } } } // return -1; vector<int> ans; for (int i=C; i<=D; i++){ if(dist[i]<INT_MAX) ans.push_back(dist[i]); } if(ans.empty()) return -1; else return *min_element(ans.begin(), ans.end()); }
#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...