Submission #1174993

#TimeUsernameProblemLanguageResultExecution timeMemory
1174993JohanRainforest Jumps (APIO21_jumps)C++20
0 / 100
2396 ms1114112 KiB
#include "jumps.h" #include "bits/stdc++.h" using namespace std; const int MAX = 3e5 + 6; const int LOG = 25; const int inf = 1e9; const int mod = 1e9 + 7; const int block = 333; // mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); queue < int > q; vector < int > d(MAX, -1); vector < vector < int > > adj(MAX); void fix(){ d.assign(MAX, -1); while(q.size()) q.pop(); } void bfs(){ while(q.size()){ int v = q.front(); q.pop(); for(auto u : adj[v]){ if(d[u] == -1){ q.push(u); d[u] = d[v] + 1; } } } } void init(int N, vector<int> H) { int n = N; vector < int > h = H; for(int i = 0; i < n; i++){ for(int j = i - 1; j >= 0; j--){ if(h[j] > h[i]) adj[i].push_back(j); } for(int j = i + 1; j < n; j++){ if(h[j] > h[i]) adj[i].push_back(j); } } } int minimum_jumps(int A, int B, int C, int D){ fix(); for(int i = A; i <= B; i++){ d[i] = 0; q.push(i); } bfs(); int mn = inf; for(int i = C; i <= D; i++) mn = min(mn, d[i]); return (mn == inf ? -1 : mn); } // signed main(){ // }
#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...