Submission #1223464

#TimeUsernameProblemLanguageResultExecution timeMemory
1223464KALARRYRainforest Jumps (APIO21_jumps)C++20
Compilation error
0 ms0 KiB
//chockolateman

#include<bits/stdc++.h>

using namespace std;


int n,l[200005],r[200005],a[200005];

void init(int N, std::vector<int> H) {
    for(int i = 1 ; i <= N ; i++)
        a[i] = H[i-1];
    n = N;
    stack<int> order;
    order.push(N+1);
    for(int i = 1 ; i <= N ; i++)
    {
        while(H[i-1] > order.top())
            order.pop();
        l[a[i]] = order.top();
        order.push(a[i]);
    }
    while(!order.empty())
        order.pop();
    order.push(N+1);
    for(int i = N ; i >= 1 ; i--)
    {
        while(H[i-1] > order.top())
            order.pop();
        r[a[i]] = order.top();
        order.push(a[i]);
    }
}


int ans(long long v,long long targ)
{
    if(v==targ)
        return 0;
    if(min(l[v],r[v]) > targ)
        return 1e9;
    long long res;
    if(max(l[v],r[v]) <= targ)
        res = ans(max(l[v],r[v]),targ) + 1;
    else
        res = ans(min(l[v],r[v]),targ) + 1;
    return res;
}

int minimum_jumps(int A, int B, int C, int D) {
    A++;
    B++;
    C++;
    D++;
    int ret = 1e9;
    for(int i = A ; i <= B ; i++)
        for(int j = C ; j <= D ; j++)
        {
            ret = min(ret,ans(a[i],a[j]));
        }
            if(ret > n)
        ret = -1;
    return ret;
}

int main() {
  int N, Q;
  assert(2 == scanf("%d %d", &N, &Q));
  std::vector<int> H(N);
  for (int i = 0; i < N; ++i) {
    assert(1 == scanf("%d", &H[i]));
  }
  init(N, H);

  for (int i = 0; i < Q; ++i) {
    int A, B, C, D;
    assert(4 == scanf("%d %d %d %d", &A, &B, &C, &D));
    printf("%d\n", minimum_jumps(A, B, C, D));
  }
  return 0;
}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccxpllrE.o: in function `main':
stub.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccXRoR2B.o:jumps.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status