Submission #1167279

#TimeUsernameProblemLanguageResultExecution timeMemory
1167279adriannokRainforest Jumps (APIO21_jumps)C++20
21 / 100
4045 ms14484 KiB
#include "jumps.h" #include <bits/stdc++.h> using namespace std; int N; vector<int> H; vector<int> sorted; vector< vector<int> > adj; void init(int n, vector<int> h) { N = n; H = h; adj.resize( N ); for (int i = 0; i < n; ++i) { for (int j = i+1; j < n; ++j) if(H[j] > H[i]) { adj[i].push_back(j); break; } for (int j = i-1; j >= 0; --j) { if(H[j] > H[i]) { adj[i].push_back(j); break; } } } } int minimum_jumps(int A, int B, int C, int D) { int minJ = N+1; queue<int> q; vector<int> distance(N, N+1); for(int i = A; i <= B; ++i) { q.push(i); distance[i] = 0; } while(!q.empty()) { int u = q.front(); q.pop(); if( C <= u && u <= D) minJ = min(minJ, distance[u]); for(const int& v : adj[u]) { if(distance[v] < N+1) continue; distance[v] = distance[u] + 1; q.push(v); } } if(minJ == N+1) minJ = -1; return minJ; }
#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...