Submission #1193949

#TimeUsernameProblemLanguageResultExecution timeMemory
1193949uranhishigRainforest Jumps (APIO21_jumps)C++20
8 / 100
4064 ms17396 KiB
// #include "jumps.h" #include <bits/stdc++.h> #include <cassert> #include <cstdio> #include <vector> using namespace std; const int mx = 2000; int dst[mx][mx]; vector<vector<int>> adj(mx); int n; void init(int N=7, std::vector<int> H={3, 2, 1, 6, 4, 5, 7}) { queue<pair<int, int>> q; n = N; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if(i==j) continue; dst[i][j] = 1e9; } } for (int i = 0; i < n -1 ; i++) { for (int j = i + 1; j < n; j++) { if(H[j] > H[i]) { adj[i].push_back(j); break; } } } for (int i = 1; i < n ; i++) { for (int j = i - 1; j>=0; j--) { if(H[j] > H[i]) { adj[i].push_back(j); break; } } } } void bfs(int start) { queue<pair<int, int>> q; vector<bool> vis(4000); vis[start] = true; q.push({start, 0}); while (!q.empty()) { int X = q.front().first; // int dist = q.front().second; q.pop(); for(auto Y:adj[X]){ if(!vis[Y]){ vis[Y] = 1; dst[start][Y] = dst[start][X] + 1; q.push({Y,dst[start][Y]}); } } } } int minimum_jumps(int A, int B, int C, int D) { int sta, end; for (int i = A; i <= B; i++) { bfs(i); } int ans = 1e9; for (int i = A; i <=B; i++) { for (int j = C; j <=D; j++) { ans = min(ans, dst[i][j]); } } if(ans==1e9) return -1; return ans; }
#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...