이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#if defined(ONPC) && !defined(_GLIBCXX_ASSERTIONS)
#define _GLIBCXX_ASSERTIONS
#endif
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/detail/standard_policies.hpp>
#include "jumps.h"
#ifdef ONPC
#include "t_debug.cpp"
#else
#define debug(...) 42
#endif
#define allit(a) (a).begin(), (a).end()
#define sz(a) ((int) (a).size())
using namespace std;
using ll = long long;
using vi = vector<int>;
namespace pd = __gnu_pbds;
template<typename K>
using ordered_set = pd::tree<K, pd::null_type, less<int>, pd::rb_tree_tag, pd::tree_order_statistics_node_update>;
template<typename... T>
using gp_hash_table = pd::gp_hash_table<T...>;//simple using statement gives warnings
const int INF = 1e9;
const ll INFL = 1e18;
const int N = 2000;
const int RANDOM = chrono::high_resolution_clock::now().time_since_epoch().count();
mt19937 rng(RANDOM);
int subtask;
vector<vi> adj;
int memo[N][N];
int dis(int i, int j) {
if (i == j) return 0;
if (memo[i][j] != 0) return memo[i][j];
int res = INF;
for (int e : adj[i]) {
res = min(res, dis(e, j));
}
return memo[i][j] = 1+res;
}
void init_2_3(int n, vi& h) {
adj.resize(n);
memset(memo, 0, sizeof(memo));
for (int i = 0; i < n; i++) {
int j = i-1, k = i+1;
for (; j >= 0; j--) {
if (h[j] > h[i]) break;
}
for (; k < n; k++) {
if (h[k] > h[i]) break;
}
if (j >= 0) adj[i].push_back(j);
if (k < n) adj[i].push_back(k);
}
}
void init(int n, std::vector<int> h) {
if (n <= 2000) {
subtask = 2;
init_2_3(n, h);
} else {
subtask = 1;
}
}
int minimum_jumps_2_3(int a, int b, int c, int d) {
int res = INF;
for (int i = a; i <= b; i++) {
for (int j = c; j <= d; j++) {
res = min(res, dis(i, j));
}
}
return (res < INF ? res : -1);
}
int minimum_jumps(int A, int B, int C, int D) {
if (subtask == 2) return minimum_jumps_2_3(A,B,C,D);
else return C - B;
}
# | 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... |