제출 #531043

#제출 시각아이디문제언어결과실행 시간메모리
531043AdamGS밀림 점프 (APIO21_jumps)C++17
21 / 100
40 ms2940 KiB
#include "jumps.h" #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; #define rep(a, b) for(int a = 0; a < (b); ++a) #define st first #define nd second #define pb push_back #define all(a) a.begin(), a.end() const int LIM=2e3+7, INF=1e9+7; int T[LIM], lewo[LIM], prawo[LIM], odl[LIM], n; void init(int N, vector<int>H) { n=N; rep(i, n) T[i]=H[i]; rep(i, n) { lewo[i]=prawo[i]=i; for(int j=i-1; j>=0; --j) if(T[j]>T[i]) { lewo[i]=j; break; } for(int j=i+1; j<n; ++j) if(T[j]>T[i]) { prawo[i]=j; break; } } } int minimum_jumps(int a, int b, int l, int r) { rep(i, n) odl[i]=INF; queue<int>q; for(int i=a; i<=b; ++i) { odl[i]=0; q.push(i); } while(!q.empty()) { int p=q.front(); q.pop(); if(l<=p && p<=r) return odl[p]; if(odl[lewo[p]]==INF) { odl[lewo[p]]=odl[p]+1; q.push(lewo[p]); } if(odl[prawo[p]]==INF) { odl[prawo[p]]=odl[p]+1; q.push(prawo[p]); } } 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...