Submission #558993

# Submission time Handle Problem Language Result Execution time Memory
558993 2022-05-09T07:05:37 Z LastRonin Rainforest Jumps (APIO21_jumps) C++14
4 / 100
4000 ms 47300 KB
#include "jumps.h"
 
#include <bits/stdc++.h>
 
#define ll long long
#define pii pair<int, int>
#define f first
#define s second
 
using namespace std;
 
const int N = 2e5 + 10;
 
int bp[N][18];
int bp2[N][18];
int bp3[N][18];
int z[N], h[N];
int Le[N], Ri[N];
 
void init(int n, vector<int> H) {
	for(int j = 1; j <= n; j++)
		h[j] = H[j - 1];
    stack<int> L, R;
	for(int j = 1; j <= n; j++)
		z[h[j]] = j;
	for(int i = 1; i <= n; i++) {
		while(L.size() && L.top() <= h[i])L.pop();	
		if(L.size())
			Le[i] = L.top();
		L.push(h[i]);		
	}	
	for(int i = n; i >= 1; i--) {
		while(R.size() && R.top() <= h[i])R.pop();	
		if(R.size())
			Ri[i] = R.top();
		R.push(h[i]);		
	}
	for(int j = n; j >= 1; j--) {
		bp[z[j]][0] = (Le[z[j]] > Ri[z[j]] ? Le[z[j]] : Ri[z[j]]);
		bp2[z[j]][0] = Ri[z[j]];
		bp3[z[j]][0] = Le[z[j]];
		for(int i = 1; i < 18; i++) {
			bp[z[j]][i] = bp[z[bp[z[j]][i - 1]]][i - 1];
			bp2[z[j]][i] = bp2[z[bp2[z[j]][i - 1]]][i - 1];
			bp3[z[j]][i] = bp3[z[bp3[z[j]][i - 1]]][i - 1];
		}
	}	
}
 
int minimum_jumps(int A, int B, int C, int D) {	
	A++, B++, C++, D++;
	ll X = B;
	for(int j = 17; j >= 0; j--) {
		if(bp2[X][j] == 0)continue;
		if(z[bp2[X][j]] < C) {
			X = z[bp2[X][j]];
		}
	}
	while(X < C) X = z[bp2[X][0]];	
	if(X < C)assert(0);
	if(X > D)return -1;
	C = X;
	for(int j = 17; j >= 0; j--) {
		if(bp3[B][j] == 0)continue;
		if(bp3[B][j] <= h[C] && z[bp3[B][j]] >= A) {
			B = z[bp3[B][j]];
		}		
	}
	ll cnt = 0;
	for(int j = 17; j >= 0; j--) {
		if(bp[B][j] == 0)continue;
		if(bp[B][j] <= h[C]) {
			cnt += (1<<j);
			B = z[bp[B][j]];
		}
	}
	for(int j = 17; j >= 0; j--) {
		if(bp2[B][j] == 0)continue;
		if(bp2[B][j] <= h[C]) {
			cnt += (1<<j);
			B = z[bp2[B][j]];
		}
	}
	if(B != C)return -1;
	return cnt;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 336 KB Output is correct
2 Correct 0 ms 336 KB Output is correct
3 Correct 184 ms 37636 KB Output is correct
4 Correct 1221 ms 47296 KB Output is correct
5 Correct 926 ms 23924 KB Output is correct
6 Correct 1208 ms 47284 KB Output is correct
7 Correct 916 ms 32320 KB Output is correct
8 Correct 1120 ms 47300 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Execution timed out 4035 ms 336 KB Time limit exceeded
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Execution timed out 4035 ms 336 KB Time limit exceeded
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 0 ms 336 KB Output is correct
3 Execution timed out 4038 ms 336 KB Time limit exceeded
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB Output is correct
2 Execution timed out 4037 ms 336 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB Output is correct
2 Execution timed out 4037 ms 336 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 336 KB Output is correct
2 Correct 0 ms 336 KB Output is correct
3 Correct 184 ms 37636 KB Output is correct
4 Correct 1221 ms 47296 KB Output is correct
5 Correct 926 ms 23924 KB Output is correct
6 Correct 1208 ms 47284 KB Output is correct
7 Correct 916 ms 32320 KB Output is correct
8 Correct 1120 ms 47300 KB Output is correct
9 Correct 0 ms 336 KB Output is correct
10 Correct 1 ms 336 KB Output is correct
11 Execution timed out 4035 ms 336 KB Time limit exceeded
12 Halted 0 ms 0 KB -