Submission #1196826

#TimeUsernameProblemLanguageResultExecution timeMemory
1196826GoBananas69Rainforest Jumps (APIO21_jumps)C++20
21 / 100
4041 ms13716 KiB
#include <cassert>
#include <cstdio>
#include <queue>
#include <vector>
#include <iostream>
#include "jumps.h"
using namespace std;
vector<vector<int>> adj;
void init(int n, vector<int> 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) {
    queue<int> q;
    int n = adj.size();
    vector<int> dist(n, -1);
    for (int i = A; i <= B; ++i) {
        q.push(i);
        dist[i] = 0;
    }
    while (!q.empty()) {
        int u = q.front();
        q.pop();
        for (int &v : adj[u]) {
            if (C <= v && v <= D) return dist[u] + 1;
            if (dist[v] != -1) continue;
            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...