Submission #1223471

#TimeUsernameProblemLanguageResultExecution timeMemory
1223471Jer밀림 점프 (APIO21_jumps)C++20
21 / 100
1608 ms2732 KiB
#include "jumps.h"
#include <bits/stdc++.h>
#include <vector>

using namespace std;

const int MAXN = 100005;
pair<int, int> con[MAXN];
int n;

bool vis[MAXN];

void init(int N, std::vector<int> H) {
	n = N;

	for (int i = 0; i < n; i++)
	{
		con[i].first = -1, con[i].second = -1;
		for (int j = i + 1; j < n; j++){
			if (H[i] < H[j])
				{con[i].second = j; break;}
		}

		for (int j = i - 1; j >= 0; j--){
			if (H[i] < H[j])
				{con[i].first = j; break;}
		}
	}
}

int minimum_jumps(int A, int B, int C, int D) {
	for (int i = 0; i < n; i++)
	vis[i] = false;

	queue<int> q;

	for (int s = A; s <= B; s++)
		q.push(s);

	int l = 0, curr, len;

	while (!q.empty())
	{
		len = q.size();
		for (int z = len; z > 0; z--){
			curr = q.front(), q.pop();

			if (vis[curr])
				continue;
			vis[curr] = true;

			if (curr >= C and curr <= D)
				return l;

			if (con[curr].first != -1)
				q.push(con[curr].first);

			if (con[curr].second != -1)
				q.push(con[curr].second);
		}
		l++;
	}

	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...