제출 #561841

#제출 시각아이디문제언어결과실행 시간메모리
561841WKYH밀림 점프 (APIO21_jumps)C++14
8 / 100
4053 ms33604 KiB
#include<bits/stdc++.h>
#define qc ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define rt return
#define fi first
#define se second
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
typedef long long int ll;
typedef long double ld;
const long long mod=1e9+7;
const long long inf=INT_MAX;
using namespace std;
ll gcd(ll a,ll b){if(b==0)rt a;rt gcd(b,a%b);}

int n;
vector<vector<int>>gph;
void init(int N,vector<int>h)
{
    n=N;
    gph.resize(n);
    for(int i=0;i<n;i++){   // O(n^2)
        for(int j=i-1;j>=0;j--){
            if(h[j]>h[i]){
                gph[i].push_back(j);
                break;
            }
        }
        for(int j=i+1;j<n;j++){
            if(h[j]>h[i]){
                gph[i].push_back(j);
                break;
            }
        }
    }
    rt;
}
int minimum_jumps(int a,int b,int c,int d)  //O(nlogn)
{
    priority_queue<pair<int,int>>q; // num,ind
    vector<bool>vis(n,false);
    for(int i=a;i<=b;i++)q.push({0,i});
    while(!q.empty()){
        int x=q.top().first,y=q.top().second;
        q.pop();
        vis[y]=true;
        if(y>=c&&y<=d)rt abs(x);
        for(auto c:gph[y]){
            if(!vis[c])q.push({x-1,c});
        }
    }
    rt -1;
}
#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...