Submission #1317995

#TimeUsernameProblemLanguageResultExecution timeMemory
1317995aris12345678Rainforest Jumps (APIO21_jumps)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>

using namespace std;

int n;
vector<int> height;
vector<vector<int>> adj;

void init(int N, vector<int> H) {
    n = N;
    height = H;
}

int bfs(int start, int A, int B, int C, int D) {
    queue<pair<int, int>> q;
    // vector<bool> vis(n, false);
    q.push({start, 0});
    int ans = INT_MAX;
    while(!q.empty()) {
        int u = q.front().first, value = q.front().second;
        q.pop();
        // if(vis[u]) continue;
        // vis[u] = true;
        if(u >= C && u <= D) {
            ans = min(ans, value);
            continue;
        }
        if(u >= A && u <= B) value = 0;
        for(int i = 0; i < adj[u].size(); i++)
            q.push({adj[u][i], value+1});
    }
    return ans; 
}

int minimum_jumps(int A, int B, int C, int D) {
    adj.resize(n);
    for(int i = 0; i < n; i++) {
        for(int j = i-1; j >= 0; j--) {
            if(height[j] > height[i]) {
                adj[i].push_back(j);
                break;
            }
        }
        for(int j = i+1; j < n; j++) {
            if(height[j] > height[i]) {
                adj[i].push_back(j);
                break;
            }
        }
    }
    int pos = 0, mn = INT_MAX;
    for(int i = A; i <= B; i++) {
        if(mn > height[i])
            mn = height[i], pos = i;
    }
    int ans = bfs(pos, A, B, C, D);    
    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;
}

Compilation message (stderr)

jumps.cpp: In function 'int main()':
jumps.cpp:63:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   63 |     scanf("%d %d", &N, &Q);
      |     ~~~~~^~~~~~~~~~~~~~~~~
jumps.cpp:66:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   66 |         scanf("%d", &H[i]);
      |         ~~~~~^~~~~~~~~~~~~
jumps.cpp:70:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   70 |         scanf("%d %d %d %d", &A, &B, &C, &D);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/ld: /tmp/cc4Bo78A.o: in function `main':
stub.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/cc1kCiwt.o:jumps.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status