Submission #1138843

#TimeUsernameProblemLanguageResultExecution timeMemory
1138843am_aadvikRainforest Jumps (APIO21_jumps)C++20
0 / 100
4056 ms20208 KiB
#include <iostream> #include <vector> #include <cstring> #include <queue> #include<set> #include<algorithm> using namespace std; vector<int> g[200005]; bool vis[200005]; int n; void con(int u, int v) { g[u].push_back(v); } void init(int tn, vector<int> a) { n = tn; set<int> s; vector<pair<int, int>> sa; for (int i = 0; i < n; ++i) sa.push_back({ a[i], i }); sort(sa.begin(), sa.end()); for (int i = n - 1; i >= 0; --i) { if (!s.empty()) { auto it = s.lower_bound(sa[i].first); if (it != s.end()) con(sa[i].second, *it); if (it != s.begin()) con(sa[i].second, (*prev(it, 1))); } s.insert(sa[i].second); } } int minimum_jumps(int a, int b, int c, int d) { queue<pair<int, int>> q; memset(vis, 0, sizeof(vis)); for (int i = a; i <= b; ++i) q.push({ i, 0 }), vis[i] = 1; while (!q.empty()) { auto f = q.front(); q.pop(); if ((f.first >= c) && (f.first <= d)) return f.second; for (auto x : g[f.first]) if (!vis[x]) q.push({ x, f.second + 1 }), vis[x] = 1; } 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...