제출 #1138848

#제출 시각아이디문제언어결과실행 시간메모리
1138848am_aadvik밀림 점프 (APIO21_jumps)C++17
4 / 100
342 ms23836 KiB
#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 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...