Submission #949778

# Submission time Handle Problem Language Result Execution time Memory
949778 2024-03-19T17:10:07 Z Aiperiii Rainforest Jumps (APIO21_jumps) C++14
27 / 100
1148 ms 42760 KB
#include <bits/stdc++.h>
#include "jumps.h"
//#define int long long
#define ff first
#define ss second
#define pb push_back
#define all(x) x.begin(),x.end()
using namespace std;
const int N=2e5+5;
int jmp_high[N][20],jmp_low[N][20],t[N*4],ind[N*4];
vector <int> h;
int n;
void build(int v,int tl,int tr){
    if(tl==tr){
        t[v]=h[tl];
        ind[v]=tl;
    }
    else{
        int tm=(tl+tr)/2;
        build(v*2,tl,tm);
        build(v*2+1,tm+1,tr);
        if(t[v*2]<t[v*2+1]){
            t[v]=t[v*2+1];
            ind[v]=ind[v*2+1];
        }
        else{
            t[v]=t[v*2];
            ind[v]=ind[v*2];
        }
    }
}
pair <int,int> get(int v,int tl,int tr,int l,int r){
    if(r<tl or tr<l)return {-1e9,-1e9};
    if(l<=tl && tr<=r)return {t[v],ind[v]};
    pair <int,int> v1,v2;
    int tm=(tl+tr)/2;
    v1=get(v*2,tl,tm,l,r);
    v2=get(v*2+1,tm+1,tr,l,r);
    if(v1.ff<v2.ff)return v2;
    else return v1;
}
void init(int N,vector<int> H) {
    stack <int> st;
    n=N;
    for(int i=0;i<N;i++)h.pb(H[i]);
    h.pb(1e9);H.pb(1e9);
    vector <int> l(N+1,N),r(N+1,N);
    for(int i=0;i<N;i++){
        while(!st.empty() && H[st.top()]<H[i]){
            r[st.top()]=i;
            st.pop();
        }
        st.push(i);
    }
    while(!st.empty())st.pop();
    for(int i=N-1;i>=0;i--){
        while(!st.empty() && H[st.top()]<H[i]){
            l[st.top()]=i;
            st.pop();
        }
        st.push(i);
    }
    for(int i=0;i<=N;i++){
        if(H[l[i]]>H[r[i]]){
            jmp_high[i][0]=l[i];
            jmp_low[i][0]=r[i];
        }
        else{
            jmp_high[i][0]=r[i];
            jmp_low[i][0]=l[i];
        }
    }
    for(int k=1;k<20;k++){
        for(int i=0;i<=N;i++){
            jmp_high[i][k]=jmp_high[jmp_high[i][k-1]][k-1];
            jmp_low[i][k]=jmp_low[jmp_low[i][k-1]][k-1];
        }
    }
    build(1,0,N-1);
}

int minimum_jumps(int A, int B, int C, int D) {
    int l=A,r=B;
    int pos=A;
    while(l<=r){
        int md=(l+r)/2;
        pair <int,int> p=get(1,0,n-1,md,B);
        if(p.ff<=h[C])r=md-1;
        else{
            pos=md;
            l=md+1;
        }
    }
    A=get(1,0,n-1,pos,B).ss;
    int ans=0;
    for(int k=19;k>=0;k--){
        if(h[jmp_high[A][k]]<=h[C]){
            A=jmp_high[A][k];
            ans+=(1<<k);
        }
    }
    for(int k=19;k>=0;k--){
        if(h[jmp_low[A][k]]<=h[C]){
            A=jmp_low[A][k];
            ans+=(1<<k);
        }
    }
    if(A==C)return ans;
    return -1;
}
/*signed main(){
    ios_base::sync_with_stdio();
    cin.tie(0);cout.tie(0);
    int n,q;
    cin>>n>>q;
    vector <int> a(n);
    for(int i=0;i<n;i++)cin>>a[i];
    init(n,a);
    for(int i=0;i<q;i++){
        int a,b,c,d;
        cin>>a>>b>>c>>d;
        cout<<minimum_jumps(a,b,c,d)<<"\n";
    }
}*/

/*
 
7 10
3 2 1 6 4 5 7
 
 */
# Verdict Execution time Memory Grader output
1 Correct 1 ms 6488 KB Output is correct
2 Correct 1 ms 6740 KB Output is correct
3 Correct 142 ms 39196 KB Output is correct
4 Correct 1147 ms 42752 KB Output is correct
5 Correct 936 ms 27440 KB Output is correct
6 Correct 1148 ms 42708 KB Output is correct
7 Correct 837 ms 34600 KB Output is correct
8 Correct 1112 ms 42524 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 6488 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 6488 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 6488 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 6488 KB Output is correct
2 Correct 1 ms 6488 KB Output is correct
3 Correct 1 ms 6488 KB Output is correct
4 Correct 180 ms 26936 KB Output is correct
5 Correct 667 ms 41756 KB Output is correct
6 Correct 465 ms 15416 KB Output is correct
7 Correct 654 ms 41760 KB Output is correct
8 Correct 415 ms 22328 KB Output is correct
9 Correct 748 ms 41772 KB Output is correct
10 Correct 737 ms 42588 KB Output is correct
11 Correct 815 ms 42760 KB Output is correct
12 Correct 773 ms 42456 KB Output is correct
13 Correct 724 ms 41748 KB Output is correct
14 Correct 753 ms 42164 KB Output is correct
15 Correct 701 ms 42616 KB Output is correct
16 Correct 719 ms 42696 KB Output is correct
17 Correct 1 ms 6488 KB Output is correct
18 Correct 1 ms 6488 KB Output is correct
19 Correct 1 ms 6488 KB Output is correct
20 Correct 2 ms 6592 KB Output is correct
21 Correct 2 ms 6488 KB Output is correct
22 Correct 2 ms 6488 KB Output is correct
23 Correct 2 ms 6488 KB Output is correct
24 Correct 2 ms 6488 KB Output is correct
25 Correct 1 ms 6488 KB Output is correct
26 Correct 1 ms 6484 KB Output is correct
27 Correct 10 ms 8536 KB Output is correct
28 Correct 10 ms 8536 KB Output is correct
29 Correct 11 ms 8536 KB Output is correct
30 Correct 13 ms 8536 KB Output is correct
31 Correct 12 ms 8536 KB Output is correct
32 Correct 1 ms 6488 KB Output is correct
33 Correct 31 ms 31448 KB Output is correct
34 Correct 61 ms 41748 KB Output is correct
35 Correct 58 ms 42444 KB Output is correct
36 Correct 65 ms 41928 KB Output is correct
37 Correct 69 ms 42268 KB Output is correct
38 Correct 64 ms 42536 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 6488 KB Output is correct
2 Correct 1 ms 6488 KB Output is correct
3 Correct 1 ms 6488 KB Output is correct
4 Correct 180 ms 26936 KB Output is correct
5 Correct 667 ms 41756 KB Output is correct
6 Correct 465 ms 15416 KB Output is correct
7 Correct 654 ms 41760 KB Output is correct
8 Correct 415 ms 22328 KB Output is correct
9 Correct 748 ms 41772 KB Output is correct
10 Correct 737 ms 42588 KB Output is correct
11 Correct 815 ms 42760 KB Output is correct
12 Correct 773 ms 42456 KB Output is correct
13 Correct 724 ms 41748 KB Output is correct
14 Correct 753 ms 42164 KB Output is correct
15 Correct 701 ms 42616 KB Output is correct
16 Correct 719 ms 42696 KB Output is correct
17 Correct 1 ms 6488 KB Output is correct
18 Correct 1 ms 6488 KB Output is correct
19 Correct 1 ms 6488 KB Output is correct
20 Correct 2 ms 6592 KB Output is correct
21 Correct 2 ms 6488 KB Output is correct
22 Correct 2 ms 6488 KB Output is correct
23 Correct 2 ms 6488 KB Output is correct
24 Correct 2 ms 6488 KB Output is correct
25 Correct 1 ms 6488 KB Output is correct
26 Correct 1 ms 6484 KB Output is correct
27 Correct 10 ms 8536 KB Output is correct
28 Correct 10 ms 8536 KB Output is correct
29 Correct 11 ms 8536 KB Output is correct
30 Correct 13 ms 8536 KB Output is correct
31 Correct 12 ms 8536 KB Output is correct
32 Correct 1 ms 6488 KB Output is correct
33 Correct 31 ms 31448 KB Output is correct
34 Correct 61 ms 41748 KB Output is correct
35 Correct 58 ms 42444 KB Output is correct
36 Correct 65 ms 41928 KB Output is correct
37 Correct 69 ms 42268 KB Output is correct
38 Correct 64 ms 42536 KB Output is correct
39 Correct 1 ms 6488 KB Output is correct
40 Correct 1 ms 6488 KB Output is correct
41 Correct 2 ms 6488 KB Output is correct
42 Correct 179 ms 26940 KB Output is correct
43 Correct 713 ms 41756 KB Output is correct
44 Correct 481 ms 15436 KB Output is correct
45 Correct 697 ms 41760 KB Output is correct
46 Correct 455 ms 22324 KB Output is correct
47 Correct 703 ms 42024 KB Output is correct
48 Correct 711 ms 42540 KB Output is correct
49 Correct 742 ms 42504 KB Output is correct
50 Correct 768 ms 42540 KB Output is correct
51 Correct 764 ms 41756 KB Output is correct
52 Correct 790 ms 42156 KB Output is correct
53 Correct 664 ms 42588 KB Output is correct
54 Correct 708 ms 42548 KB Output is correct
55 Correct 1 ms 6488 KB Output is correct
56 Incorrect 134 ms 41764 KB Output isn't correct
57 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 6488 KB Output is correct
2 Correct 1 ms 6740 KB Output is correct
3 Correct 142 ms 39196 KB Output is correct
4 Correct 1147 ms 42752 KB Output is correct
5 Correct 936 ms 27440 KB Output is correct
6 Correct 1148 ms 42708 KB Output is correct
7 Correct 837 ms 34600 KB Output is correct
8 Correct 1112 ms 42524 KB Output is correct
9 Incorrect 1 ms 6488 KB Output isn't correct
10 Halted 0 ms 0 KB -