#include <iostream>
#include <vector>
#include <cstring>
#include <queue>
#include<set>
#include<algorithm>
using namespace std;
vector<int> g[200005];
bool vis[200005], sub1 = 1; int n, cnt = 0;
void con(int u, int v) {
g[u].push_back(v);
cnt++;
}
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 }),
sub1 &= (!i ? 1 : (a[i] > a[i - 1]));
sort(sa.begin(), sa.end());
for (int i = n - 1; i >= 0; --i) {
if (!s.empty()) {
auto it = s.lower_bound(sa[i].second);
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);
}
if (cnt != (n - 1)) cnt /= 0;
}
int minimum_jumps(int a, int b, int c, int d) {
if (sub1) return c - b;
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;
}
컴파일 시 표준 에러 (stderr) 메시지
jumps.cpp: In function 'void init(int, std::vector<int>)':
jumps.cpp:31:33: warning: division by zero [-Wdiv-by-zero]
31 | if (cnt != (n - 1)) cnt /= 0;
| ~~~~^~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |