제출 #1178015

#제출 시각아이디문제언어결과실행 시간메모리
1178015KasymK밀림 점프 (APIO21_jumps)C++17
21 / 100
4083 ms5020 KiB
#include "bits/stdc++.h"
using namespace std;
#define ff first
#define ss second
#define all(v) v.begin(), v.end()
#define ll long long
#define pb push_back
#define pii pair<int, int>
#define pli pair<ll, int>
#define pll pair<ll, ll>
#define tr(i, c) for(auto i = c.begin(); i != c.end(); ++i)
#define wr puts("----------------")
template<class T>bool umin(T& a,T b){if(a>b){a=b;return 1;}return 0;}
template<class T>bool umax(T& a,T b){if(a<b){a=b;return 1;}return 0;}
const int N = 2e5+5;
const int INF = 1e9;
int v[N], l[N], r[N], dis[N], n;

void init(int N, vector<int> A){
    int op=0;
    tr(it, A)
    v[++op]=*it;
    memset(l, -1, sizeof l);
    memset(r, -1, sizeof r);
    n=N;
    for(int i = 1; i <= n; ++i){
        for(int j = i-1; j >= 1; --j)
            if(v[j]>v[i]){
                l[i]=j;
                break;
            }
        for(int j = i+1; j <= n; ++j)
            if(v[j]>v[i]){
                r[i]=j;
                break;
            }
    }
}

int minimum_jumps(int a, int b, int c, int d){
    a++, b++, c++, d++;
    queue<int> q;
    for(int i = 1; i <= n; ++i){
        dis[i]=INF;
        if(i>=a and i<=b)
            q.push(i), dis[i]=0;
    }
    while(!q.empty()){
        int x=q.front();
        q.pop();
        if(~l[x] and umin(dis[l[x]], dis[x]+1))
            q.push(l[x]);
        if(~r[x] and umin(dis[r[x]], dis[x]+1))
            q.push(r[x]);
    }
    int answer=INF;
    for(int i = c; i <= d; ++i)
        umin(answer, dis[i]);
    if(answer==INF)
        return -1;
    return answer;
}

// int main(){
//     int n;
//     scanf("%d", &n);
//     vector<int> v;
//     for(int i = 1; i <= n; ++i){
//         int x;
//         scanf("%d", &x);
//         v.pb(x);
//     }
//     init(n, v);
//     int q;
//     scanf("%d", &q);
//     while(q--){
//         int a, b, c, d;
//         scanf("%d%d%d%d", &a, &b, &c, &d);
//         printf("%d\n", minimum_jumps(a, b, c, d));
//     }
//     return 0;
// }
#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...