제출 #981298

#제출 시각아이디문제언어결과실행 시간메모리
981298Faisal_SaqibRainforest Jumps (APIO21_jumps)C++17
21 / 100
114 ms3404 KiB
#include "jumps.h" #include <vector> #include <bits/stdc++.h> //#include "stub.cpp" using namespace std; const int N=2002; int n; int dist[N]; vector<int> adj[N]; void init(int NP, std::vector<int> a) { n=NP; for(int i=0;i<n;i++) { int j=i; while(j>=0 and a[j]<=a[i]) j--; if((j>=0 and a[j]>a[i])) adj[i].push_back(j); j=i; while(j<n and a[j]<=a[i]) j++; if((j<n and a[j]>a[i])) adj[i].push_back(j); } } int minimum_jumps(int a, int b, int c, int d) { for(int j=0;j<=n;j++) dist[j]=2e9; priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> pq; for(int st=a;st<=b;st++) pq.push({dist[st]=0,st}); while(pq.size()) { auto it=pq.top(); if(c<=it.second and it.second<=d) return it.first; pq.pop(); if(dist[it.second]==it.first) for(auto dj:adj[it.second]) if(dist[dj]>(dist[it.second]+1)) { dist[dj]=dist[it.second]+1; pq.push({dist[dj],dj}); } } 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...