Submission #979418

#TimeUsernameProblemLanguageResultExecution timeMemory
979418vjudge1Rainforest Jumps (APIO21_jumps)C++17
33 / 100
4073 ms15780 KiB
#include "jumps.h" #include <bits/stdc++.h> using namespace std; vector<int>adj[200100]; int vis[200100],d[200100],n,h[200100]; void init(int N, std::vector<int> H) { stack<int> stk; n=N; for(int i=0;i<N;i++){ while(stk.size()&&H[stk.top()]<=H[i]) stk.pop(); if(stk.size()) adj[i].push_back(stk.top()); stk.push(i); } while(stk.size())stk.pop(); for(int i=N;i--;){ while(stk.size()&&H[stk.top()]<=H[i]) stk.pop(); if(stk.size()) adj[i].push_back(stk.top()); stk.push(i); } } int minimum_jumps(int A, int B, int C, int D) { queue<int> q; for(int i=0;i<n;i++) vis[i]=0; for(int i=A;i<=B;i++) vis[i]=1,q.push(i),d[i]=0; while(q.size()){ int x=q.front(); q.pop(); for(auto i:adj[x]) if(!vis[i]) vis[i]=1,d[i]=d[x]+1,q.push(i); } int ans=n; for(int i=C;i<=D;i++) if(vis[i]) ans=min(ans,d[i]); return ans<n?ans:-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...