제출 #1167279

#제출 시각아이디문제언어결과실행 시간메모리
1167279adriannok밀림 점프 (APIO21_jumps)C++20
21 / 100
4045 ms14484 KiB
#include "jumps.h"

#include <bits/stdc++.h>

using namespace std;

int N;
vector<int> H;
vector<int> sorted;
vector< vector<int> > adj;

void init(int n, vector<int> h) 
{
	N = n;
	H = h;
	adj.resize( N );
	
	for (int i = 0; i < n; ++i)
	{
		for (int j = i+1; j < n; ++j)
			if(H[j] > H[i])
			{
				adj[i].push_back(j);
				break;
			}
			
		for (int j = i-1; j >= 0; --j)
		{
			if(H[j] > H[i])
			{
				adj[i].push_back(j);
				break;
			}
		}
		
	}
	
}

int minimum_jumps(int A, int B, int C, int D)
{
	int minJ = N+1;
	queue<int> q;
	vector<int> distance(N, N+1);
	
	for(int i = A; i <= B; ++i)
	{
		q.push(i);
		distance[i] = 0;
	}
	
	while(!q.empty())
	{
		int u = q.front();
		q.pop();
		
		if( C <= u && u <= D)
			minJ = min(minJ, distance[u]);
		
		for(const int& v : adj[u])
		{
			if(distance[v] < N+1)
				continue;
			distance[v] = distance[u] + 1;
			q.push(v);
		}
	}
	
	if(minJ == N+1)
		minJ = -1;
	return minJ;
}
#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...