Submission #1168337

#TimeUsernameProblemLanguageResultExecution timeMemory
1168337mertbbmRainforest Jumps (APIO21_jumps)C++20
21 / 100
21 ms2044 KiB
#include "jumps.h"
#include <bits/stdc++.h>
//#include "stub.cpp"
using namespace std;

//#define int long long 
#define ld long double
#define show(x,y) cout << y << " " << #x << endl;
#define show2(x,y,i,j) cout << y << " " << #x << "  " << j << " " << #i << endl;
#define show3(x,y,i,j,p,q) cout << y << " " << #x << "  " << j << " " << #i << "  " << q << " " << #p << endl;
#define show4(x,y) for(auto it:y) cout << it << " "; cout << #x << endl;
typedef pair<int,int>pii;
typedef pair<pii,pii>pi2;
mt19937_64 rng(chrono::system_clock::now().time_since_epoch().count());

int n;
vector<int>adj[10005];

void init(int n2, vector<int>arr){
	n=n2;
	
	vector<int>d;
	for(int x=0;x<n;x++){
		while(!d.empty()&&arr[d.back()]<arr[x]) d.pop_back();
		if(!d.empty()){
			adj[x].push_back(d.back());
		}
		d.push_back(x);
	}
	
	d.clear();
	for(int x=n-1;x>=0;x--){
		while(!d.empty()&&arr[d.back()]<arr[x]) d.pop_back();
		if(!d.empty()){
			adj[x].push_back(d.back());
		}
		d.push_back(x);
	}
}

int minimum_jumps(int a, int b, int c, int d){
	int dist[n+5];
	memset(dist,-1,sizeof(dist));
	queue<int>q;
	for(int x=a;x<=b;x++){
		dist[x]=0;
		q.push(x);
	}
	
	while(!q.empty()){
		int cur=q.front();
		q.pop();
		for(auto it:adj[cur]){
			if(dist[it]!=-1) continue;
			dist[it]=dist[cur]+1;
			q.push(it);
		}
	}
	
	int best=1e9;
	for(int x=c;x<=d;x++){
		if(dist[x]==-1) continue;
		best=min(best,dist[x]);
	}
	
	if(best==1e9) return -1;
	else return best;
}
#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...