| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1356082 | kokokai | Railway Trip (JOI17_railway_trip) | C++20 | 2095 ms | 10816 KiB |
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
#define task "text"
#define fi first
#define se second
#define int long long
const int N = 2e5+5;
vector<int> adj[N];
int L[N];
int d[N];
int n,k,q;
namespace subtask2{
void solve(){
vector<int> st;
for(int i=1;i<=n;i++){
while(!st.empty() && L[st.back()] < L[i]) st.pop_back();
if(st.size()){
adj[i].push_back(st.back());
adj[st.back()].push_back(i);
}
st.push_back(i);
}
st.clear();
for(int i=n;i>=1;i--){
while(!st.empty() && L[st.back()] < L[i]) st.pop_back();
if(st.size()){
adj[i].push_back(st.back());
adj[st.back()].push_back(i);
}
st.push_back(i);
}
while(q--){
int a,b;
cin>>a>>b;
for(int i=1;i<=n;i++){
d[i]=1e9;
}
d[a]=0;
queue<int> q;
q.push(a);
while(!q.empty()){
int u=q.front();
q.pop();
for(int v:adj[u]){
if(d[v]>d[u]+1){
d[v]=d[u]+1;
q.push(v);
}
}
}
cout<<d[b]-1<<'\n';
}
}
}
signed main(){
ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
if(fopen(task".inp", "r")) {
freopen(task".inp", "r", stdin);
}
cin>>n>>k>>q;
for(int i=1;i<=n;i++) cin>>L[i];
subtask2::solve();
}
컴파일 시 표준 에러 (stderr) 메시지
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
