Submission #1345329

#TimeUsernameProblemLanguageResultExecution timeMemory
1345329killerzaluu밀림 점프 (APIO21_jumps)C++20
21 / 100
4051 ms14484 KiB
#include <bits/stdc++.h>
using namespace std;

static int N;
static vector<int> H;
static vector<vector<int>> adj;

void init(int n, vector<int> h) {
    N = n;
    H = h;
    adj.assign(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) {
    vector<int> dist(N, -1);
    queue<int> q;

    for (int i = A; i <= B; i++) {
        dist[i] = 0;
        q.push(i);
    }

    while (!q.empty()) {
        int u = q.front();
        q.pop();

        if (C <= u && u <= D) return dist[u];

        for (int v : adj[u]) {
            if (dist[v] == -1) {
                dist[v] = dist[u] + 1;
                q.push(v);
            }
        }
    }

    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...