Submission #734184

# Submission time Handle Problem Language Result Execution time Memory
734184 2023-05-02T03:41:16 Z bin9638 Rainforest Jumps (APIO21_jumps) C++17
48 / 100
2099 ms 56024 KB
#include <bits/stdc++.h>

#ifndef SKY
#include "jumps.h"
#endif // SKY

using namespace std;

#define N 200010
#define ll long long
#define fs first
#define sc second
#define ii pair<int,int>
#define pb push_back

struct IT
{
    int ST[N*4];

    void init()
    {
        memset(ST,-0x3f3f,sizeof(ST));
    }

    void update(int id,int l,int r,int i,int val)
    {
        if(l>i||r<i)
            return;
        if(l==r)
        {
            ST[id]=val;
            return;
        }
        int mid=(l+r)/2;
        update(id*2,l,mid,i,val);
        update(id*2+1,mid+1,r,i,val);
        ST[id]=max(ST[id*2],ST[id*2+1]);
    }

    int get(int id,int l,int r,int u,int v)
    {
        if(u>v||l>v||r<u)
            return -1e9;
        if(l>=u&&r<=v)
            return ST[id];
        int mid=(l+r)/2;
        return max(get(id*2,l,mid,u,v),get(id*2+1,mid+1,r,u,v));
    }
}IT;

int n,h[N],pos[N],truoc[N][21],sau[N][21],LOG,nxt[N][21];

void init(int NNN, vector<int> HHH)
{
    n=NNN;
    for(int i=0;i<n;i++)
        h[i+1]=HHH[i],pos[HHH[i]]=i+1;
    LOG=log2(n);
    IT.init();
    for(int i=n;i>=1;i--)
    {
        if(IT.get(1,1,n,1,pos[i]-1)>=-n)
            truoc[pos[i]][0]=abs(IT.get(1,1,n,1,pos[i]-1));
        IT.update(1,1,n,pos[i],pos[i]);
    }
    IT.init();
    for(int i=n;i>=1;i--)
    {
        if(IT.get(1,1,n,pos[i]+1,n)>=-n)
            sau[pos[i]][0]=abs(IT.get(1,1,n,pos[i]+1,n));
        IT.update(1,1,n,pos[i],-pos[i]);
    }
    for(int k=1;k<=LOG;k++)
        for(int i=1;i<=n;i++)
            {
                sau[i][k]=sau[sau[i][k-1]][k-1];
                truoc[i][k]=truoc[truoc[i][k-1]][k-1];
            }
   // for(int i=1;i<=n;i++)cout<<truoc[i][0]<<" "<<sau[i][0]<<endl;
    IT.init();
    for(int i=1;i<=n;i++)
        IT.update(1,1,n,i,h[i]);
    for(int i=1;i<=n;i++)
        if(h[truoc[i][0]]>h[sau[i][0]])
            nxt[i][0]=truoc[i][0];
                else nxt[i][0]=sau[i][0];
    for(int k=1;k<=LOG;k++)
        for(int i=1;i<=n;i++)
            nxt[i][k]=nxt[nxt[i][k-1]][k-1];
}

bool check(int vt,int C,int D)
{
    return(vt>=C&&vt<=D);
}

int f[2010];

int minimum_jumps(int A, int B, int C, int D)
{
    A++;B++;C++;D++;
    if(IT.get(1,1,n,B,C-1)>IT.get(1,1,n,C,D))
        return -1;
    int l=A,r=B,vt;
    while(l<=r)
    {
        int mid=(l+r)/2;
        if(IT.get(1,1,n,mid,B)<IT.get(1,1,n,C,D))
        {
            vt=mid;
            r=mid-1;
        }else
        {
            l=mid+1;
        }
    }
    int val=IT.get(1,1,n,vt,B);
    l=A,r=B;
    while(l<=r)
    {
        int mid=(l+r)/2;
        if(IT.get(1,1,n,mid,B)>=val)
        {
            vt=mid;
            l=mid+1;
        }else
            r=mid-1;
    }
    int res=0;
    val=IT.get(1,1,n,C,D);
  //  cout<<vt<<endl;
    for(int k=LOG;k>=0;k--)
        if(nxt[vt][k]!=0&&sau[vt][k]!=0&&sau[vt][k]<C&&h[nxt[vt][k]]<val)
            vt=nxt[vt][k],res+=(1<<k);
    //cout<<vt<<" "<<res<<endl;
    for(int k=LOG;k>=0;k--)
        if(sau[vt][k]!=0&&sau[vt][k]<C)
            vt=sau[vt][k],res+=(1<<k);
    return res+1;
}


#ifdef SKY
int main()
{
    freopen("A.inp","r",stdin);
    freopen("A.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(NULL);
    cout.tie(NULL);
    int n;
    cin>>n;
    vector<int>H(n);
    for(int i=0;i<n;i++)
        cin>>H[i];
    init(n,H);
    int q;
    cin>>q;
    while(q--)
    {
        int A,B,C,D;
        cin>>A>>B>>C>>D;
        cout<<minimum_jumps(A,B,C,D)<<endl;
    }
    return 0;
}
#endif

Compilation message

jumps.cpp: In function 'int minimum_jumps(int, int, int, int)':
jumps.cpp:104:17: warning: 'vt' may be used uninitialized in this function [-Wmaybe-uninitialized]
  104 |     int l=A,r=B,vt;
      |                 ^~
# Verdict Execution time Memory Grader output
1 Correct 2 ms 3408 KB Output is correct
2 Correct 2 ms 3408 KB Output is correct
3 Correct 290 ms 45196 KB Output is correct
4 Correct 1823 ms 55876 KB Output is correct
5 Correct 1514 ms 29896 KB Output is correct
6 Correct 1928 ms 55872 KB Output is correct
7 Correct 1460 ms 39280 KB Output is correct
8 Correct 2099 ms 55868 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 3408 KB Output is correct
2 Correct 2 ms 3408 KB Output is correct
3 Correct 3 ms 3408 KB Output is correct
4 Correct 2 ms 3408 KB Output is correct
5 Correct 4 ms 3408 KB Output is correct
6 Correct 5 ms 3408 KB Output is correct
7 Correct 3 ms 3408 KB Output is correct
8 Correct 4 ms 3496 KB Output is correct
9 Correct 3 ms 3408 KB Output is correct
10 Incorrect 4 ms 3408 KB Output isn't correct
11 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 3408 KB Output is correct
2 Correct 2 ms 3408 KB Output is correct
3 Correct 3 ms 3408 KB Output is correct
4 Correct 2 ms 3408 KB Output is correct
5 Correct 4 ms 3408 KB Output is correct
6 Correct 5 ms 3408 KB Output is correct
7 Correct 3 ms 3408 KB Output is correct
8 Correct 4 ms 3496 KB Output is correct
9 Correct 3 ms 3408 KB Output is correct
10 Incorrect 4 ms 3408 KB Output isn't correct
11 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 3408 KB Output is correct
2 Correct 2 ms 3408 KB Output is correct
3 Correct 2 ms 3408 KB Output is correct
4 Correct 2 ms 3372 KB Output is correct
5 Correct 246 ms 45600 KB Output is correct
6 Correct 292 ms 55900 KB Output is correct
7 Correct 146 ms 30264 KB Output is correct
8 Correct 290 ms 55824 KB Output is correct
9 Correct 30 ms 11316 KB Output is correct
10 Correct 283 ms 55776 KB Output is correct
11 Correct 208 ms 55876 KB Output is correct
12 Correct 210 ms 55872 KB Output is correct
13 Incorrect 208 ms 55860 KB Output isn't correct
14 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 3408 KB Output is correct
2 Correct 2 ms 3408 KB Output is correct
3 Correct 2 ms 3408 KB Output is correct
4 Correct 352 ms 27372 KB Output is correct
5 Correct 1043 ms 55872 KB Output is correct
6 Correct 670 ms 11976 KB Output is correct
7 Correct 1056 ms 55828 KB Output is correct
8 Correct 689 ms 21480 KB Output is correct
9 Correct 1038 ms 55880 KB Output is correct
10 Correct 1149 ms 55840 KB Output is correct
11 Correct 1208 ms 55780 KB Output is correct
12 Correct 1240 ms 55932 KB Output is correct
13 Correct 1216 ms 55752 KB Output is correct
14 Correct 1177 ms 55840 KB Output is correct
15 Correct 1175 ms 55848 KB Output is correct
16 Correct 1094 ms 55920 KB Output is correct
17 Correct 2 ms 3408 KB Output is correct
18 Correct 2 ms 3408 KB Output is correct
19 Correct 3 ms 3408 KB Output is correct
20 Correct 4 ms 3408 KB Output is correct
21 Correct 3 ms 3408 KB Output is correct
22 Correct 3 ms 3436 KB Output is correct
23 Correct 5 ms 3408 KB Output is correct
24 Correct 3 ms 3408 KB Output is correct
25 Correct 2 ms 3408 KB Output is correct
26 Correct 3 ms 3616 KB Output is correct
27 Correct 24 ms 3920 KB Output is correct
28 Correct 23 ms 3920 KB Output is correct
29 Correct 19 ms 3920 KB Output is correct
30 Correct 20 ms 3920 KB Output is correct
31 Correct 21 ms 3920 KB Output is correct
32 Correct 2 ms 3408 KB Output is correct
33 Correct 158 ms 33788 KB Output is correct
34 Correct 315 ms 55972 KB Output is correct
35 Correct 215 ms 55752 KB Output is correct
36 Correct 270 ms 55972 KB Output is correct
37 Correct 221 ms 55968 KB Output is correct
38 Correct 207 ms 55832 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 3408 KB Output is correct
2 Correct 2 ms 3408 KB Output is correct
3 Correct 2 ms 3408 KB Output is correct
4 Correct 352 ms 27372 KB Output is correct
5 Correct 1043 ms 55872 KB Output is correct
6 Correct 670 ms 11976 KB Output is correct
7 Correct 1056 ms 55828 KB Output is correct
8 Correct 689 ms 21480 KB Output is correct
9 Correct 1038 ms 55880 KB Output is correct
10 Correct 1149 ms 55840 KB Output is correct
11 Correct 1208 ms 55780 KB Output is correct
12 Correct 1240 ms 55932 KB Output is correct
13 Correct 1216 ms 55752 KB Output is correct
14 Correct 1177 ms 55840 KB Output is correct
15 Correct 1175 ms 55848 KB Output is correct
16 Correct 1094 ms 55920 KB Output is correct
17 Correct 2 ms 3408 KB Output is correct
18 Correct 2 ms 3408 KB Output is correct
19 Correct 3 ms 3408 KB Output is correct
20 Correct 4 ms 3408 KB Output is correct
21 Correct 3 ms 3408 KB Output is correct
22 Correct 3 ms 3436 KB Output is correct
23 Correct 5 ms 3408 KB Output is correct
24 Correct 3 ms 3408 KB Output is correct
25 Correct 2 ms 3408 KB Output is correct
26 Correct 3 ms 3616 KB Output is correct
27 Correct 24 ms 3920 KB Output is correct
28 Correct 23 ms 3920 KB Output is correct
29 Correct 19 ms 3920 KB Output is correct
30 Correct 20 ms 3920 KB Output is correct
31 Correct 21 ms 3920 KB Output is correct
32 Correct 2 ms 3408 KB Output is correct
33 Correct 158 ms 33788 KB Output is correct
34 Correct 315 ms 55972 KB Output is correct
35 Correct 215 ms 55752 KB Output is correct
36 Correct 270 ms 55972 KB Output is correct
37 Correct 221 ms 55968 KB Output is correct
38 Correct 207 ms 55832 KB Output is correct
39 Correct 3 ms 3408 KB Output is correct
40 Correct 2 ms 3408 KB Output is correct
41 Correct 2 ms 3408 KB Output is correct
42 Correct 261 ms 27340 KB Output is correct
43 Correct 1191 ms 55888 KB Output is correct
44 Correct 680 ms 11976 KB Output is correct
45 Correct 1060 ms 55764 KB Output is correct
46 Correct 606 ms 21456 KB Output is correct
47 Correct 1034 ms 55956 KB Output is correct
48 Correct 1183 ms 55848 KB Output is correct
49 Correct 1111 ms 55840 KB Output is correct
50 Correct 1402 ms 55840 KB Output is correct
51 Correct 1172 ms 55880 KB Output is correct
52 Correct 1061 ms 55752 KB Output is correct
53 Correct 908 ms 55844 KB Output is correct
54 Correct 989 ms 55876 KB Output is correct
55 Correct 2 ms 3408 KB Output is correct
56 Correct 347 ms 55568 KB Output is correct
57 Correct 929 ms 55752 KB Output is correct
58 Correct 406 ms 12660 KB Output is correct
59 Correct 944 ms 55872 KB Output is correct
60 Correct 497 ms 22060 KB Output is correct
61 Correct 1229 ms 55772 KB Output is correct
62 Correct 1666 ms 55844 KB Output is correct
63 Correct 1550 ms 55916 KB Output is correct
64 Correct 1797 ms 55820 KB Output is correct
65 Correct 1218 ms 55868 KB Output is correct
66 Correct 1777 ms 56024 KB Output is correct
67 Correct 1607 ms 55752 KB Output is correct
68 Correct 1268 ms 55932 KB Output is correct
69 Correct 2 ms 3408 KB Output is correct
70 Correct 2 ms 3408 KB Output is correct
71 Correct 5 ms 3408 KB Output is correct
72 Correct 5 ms 3408 KB Output is correct
73 Correct 4 ms 3408 KB Output is correct
74 Correct 4 ms 3408 KB Output is correct
75 Correct 4 ms 3408 KB Output is correct
76 Correct 2 ms 3408 KB Output is correct
77 Correct 2 ms 3408 KB Output is correct
78 Correct 3 ms 3408 KB Output is correct
79 Correct 4 ms 3408 KB Output is correct
80 Correct 4 ms 3408 KB Output is correct
81 Correct 4 ms 3408 KB Output is correct
82 Correct 4 ms 3408 KB Output is correct
83 Correct 4 ms 3408 KB Output is correct
84 Correct 2 ms 3408 KB Output is correct
85 Correct 5 ms 3408 KB Output is correct
86 Correct 19 ms 3920 KB Output is correct
87 Correct 27 ms 3920 KB Output is correct
88 Correct 23 ms 3920 KB Output is correct
89 Correct 27 ms 3920 KB Output is correct
90 Correct 25 ms 3920 KB Output is correct
91 Correct 2 ms 3408 KB Output is correct
92 Correct 3 ms 3664 KB Output is correct
93 Correct 25 ms 3920 KB Output is correct
94 Correct 20 ms 3920 KB Output is correct
95 Correct 20 ms 3920 KB Output is correct
96 Correct 21 ms 3920 KB Output is correct
97 Correct 23 ms 3960 KB Output is correct
98 Correct 2 ms 3408 KB Output is correct
99 Correct 310 ms 55724 KB Output is correct
100 Correct 282 ms 55840 KB Output is correct
101 Correct 206 ms 55840 KB Output is correct
102 Correct 274 ms 55916 KB Output is correct
103 Correct 210 ms 55876 KB Output is correct
104 Correct 199 ms 55828 KB Output is correct
105 Correct 2 ms 3408 KB Output is correct
106 Correct 149 ms 33736 KB Output is correct
107 Correct 276 ms 55936 KB Output is correct
108 Correct 202 ms 55880 KB Output is correct
109 Correct 262 ms 55872 KB Output is correct
110 Correct 222 ms 55772 KB Output is correct
111 Correct 207 ms 55840 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 3408 KB Output is correct
2 Correct 2 ms 3408 KB Output is correct
3 Correct 290 ms 45196 KB Output is correct
4 Correct 1823 ms 55876 KB Output is correct
5 Correct 1514 ms 29896 KB Output is correct
6 Correct 1928 ms 55872 KB Output is correct
7 Correct 1460 ms 39280 KB Output is correct
8 Correct 2099 ms 55868 KB Output is correct
9 Correct 2 ms 3408 KB Output is correct
10 Correct 2 ms 3408 KB Output is correct
11 Correct 3 ms 3408 KB Output is correct
12 Correct 2 ms 3408 KB Output is correct
13 Correct 4 ms 3408 KB Output is correct
14 Correct 5 ms 3408 KB Output is correct
15 Correct 3 ms 3408 KB Output is correct
16 Correct 4 ms 3496 KB Output is correct
17 Correct 3 ms 3408 KB Output is correct
18 Incorrect 4 ms 3408 KB Output isn't correct
19 Halted 0 ms 0 KB -