Submission #980580

# Submission time Handle Problem Language Result Execution time Memory
980580 2024-05-12T09:01:58 Z vjudge1 Rainforest Jumps (APIO21_jumps) C++17
0 / 100
4000 ms 30204 KB
#include "jumps.h"

#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 100, INF = 1e9;
vector<int> v[N];
int dist[N], n, tin[N], tout[N], tt, r[N ];
queue<int> q;

void bfs() {
    while (!q.empty()) {
        int cur = q.front();
        q.pop();
        for (auto to : v[cur]) {
            if (dist[to] != INF)
                continue;
            dist[to] = dist[cur] + 1;
            q.push(to);
        }
    }
}

void dfs(int x) {
    tin[x] = ++tt;
    for (auto to : v[x]) {
        r[to] = r[x] + 1;
        dfs(to);
    }
    tout[x] = tt;
}

void init(int N, vector<int> H) {
    vector<pair<int, int>> ord(N);
    set<int> s;
    for (int i = 0; i < N; i++) {
        ord[i].first = H[i];
        ord[i].second = i;
    }
    n = N;
    sort(ord.begin(), ord.end());
    reverse(ord.begin(), ord.end());
    vector<int> todo;
    for (int i = 0; i < N; i++) {
        todo.clear();
        while (true) {
            todo.push_back(ord[i].second);
            auto l = s.lower_bound(ord[i].second);
            if (l != s.end()) {
              v[ord[i].second].push_back(*l);
              // cout << ord[i].second << " " << *l << "\n";
            }
            if (l != s.begin()) {
              --l;
              v[ord[i].second].push_back(*l);
              // cout << ord[i].second << " " << *l << "\n";
            }
            if (i + 1 < N && ord[i].first == ord[i + 1].first) {
              i++;
              continue;
            }
            break;
        }
        for (auto it : todo)
            s.insert(it);
    }
    reverse(ord.begin(), ord.end());
    for (auto i : ord) {
        if (!tin[i.second]) {
            dfs(i.second);
        }
    }
}

int minimum_jumps(int A, int B, int C, int D) {
    if (A == B && C == D) {
        if (tin[A] <= tin[C] && tout[A] >= tout[C])
            return r[C] - r[A];
        return -1;
    }
    int res = INF;
    for (int i = 0; i < n; i++) {
        dist[i] = INF;
    }
    for (int i = A; i <= B; i++) {
        dist[i] = 0;
        q.push(i);
    }
    bfs();
    for (int i = C; i <= D; i++) {
        res = min(res, dist[i]);
    }
    return (res == INF ? -1 : res);
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 5976 KB Output is correct
2 Correct 2 ms 5976 KB Output is correct
3 Execution timed out 4064 ms 30204 KB Time limit exceeded
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 5976 KB Output is correct
2 Correct 2 ms 5976 KB Output is correct
3 Correct 2 ms 5976 KB Output is correct
4 Correct 2 ms 5976 KB Output is correct
5 Incorrect 3 ms 5976 KB Output isn't correct
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 5976 KB Output is correct
2 Correct 2 ms 5976 KB Output is correct
3 Correct 2 ms 5976 KB Output is correct
4 Correct 2 ms 5976 KB Output is correct
5 Incorrect 3 ms 5976 KB Output isn't correct
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 5976 KB Output is correct
2 Correct 2 ms 5976 KB Output is correct
3 Correct 1 ms 5976 KB Output is correct
4 Correct 2 ms 5976 KB Output is correct
5 Execution timed out 4057 ms 23028 KB Time limit exceeded
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 5976 KB Output is correct
2 Correct 3 ms 5976 KB Output is correct
3 Correct 2 ms 5976 KB Output is correct
4 Execution timed out 4051 ms 15704 KB Time limit exceeded
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 5976 KB Output is correct
2 Correct 3 ms 5976 KB Output is correct
3 Correct 2 ms 5976 KB Output is correct
4 Execution timed out 4051 ms 15704 KB Time limit exceeded
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 5976 KB Output is correct
2 Correct 2 ms 5976 KB Output is correct
3 Execution timed out 4064 ms 30204 KB Time limit exceeded
4 Halted 0 ms 0 KB -