제출 #1318004

#제출 시각아이디문제언어결과실행 시간메모리
1318004aris12345678밀림 점프 (APIO21_jumps)C++17
0 / 100
4043 ms10228 KiB
#include <bits/stdc++.h> using namespace std; int n; vector<int> height, dist; vector<vector<int>> adj; void init(int N, vector<int> H) { n = N; height = H; adj.resize(N); 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); break; } } for(int j = i+1; j < n; j++) { if(H[j] > H[i]) { adj[i].push_back(j); break; } } } } int minimum_jumps(int A, int B, int C, int D) { queue<int> q; dist.assign(n, INT_MAX); for(int i = A; i <= B; i++) { q.push(i); dist[i] = 0; } while(!q.empty()) { int u = q.front(); q.pop(); if(u >= C && u <= D) continue; for(int i = 0; i < adj[u].size(); i++) { if(dist[adj[u][i]] > dist[u]+1) { q.push(adj[u][i]); dist[adj[u][i]] = dist[u]+1; } } } int ans = INT_MAX; for(int i = C; i <= D; i++) ans = min(ans, dist[i]); return ans; if(ans == INT_MAX) return -1; return ans; } // int main() { // int N, Q; // scanf("%d %d", &N, &Q); // vector<int> H(N); // for(int i = 0; i < N; i++) // scanf("%d", &H[i]); // init(N, H); // while(Q--) { // int A, B, C, D; // scanf("%d %d %d %d", &A, &B, &C, &D); // printf("%d\n", minimum_jumps(A, B, C, D)); // } // return 0; // }
#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...