結果
問題 | No.3072 Speedrun Query |
ユーザー |
|
提出日時 | 2025-03-21 22:08:35 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 153 ms / 2,500 ms |
コード長 | 1,214 bytes |
コンパイル時間 | 2,303 ms |
コンパイル使用メモリ | 196,344 KB |
実行使用メモリ | 7,808 KB |
最終ジャッジ日時 | 2025-03-21 22:08:42 |
合計ジャッジ時間 | 6,611 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 21 |
ソースコード
#include <bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); int N,Ka,Kb; cin >> N >> Ka >> Kb; vector<int> A(Ka),B(Kb); for(auto &a : A) cin >> a,a--; for(auto &b : B) cin >> b,b--; vector<int> Na(N,1e9),Nb(N,1e9); int posa = 0,posb = 0; for(int i=0; i<N; i++){ if(posa != Ka){ int a = A.at(posa); if(a == i) posa++; Na.at(i) = min(Na.at(i),abs(a-i)); } if(posa != 0){ int a = A.at(posa-1); Na.at(i) = min(Na.at(i),abs(a-i)); } if(posb != Kb){ int b = B.at(posb); if(b == i) posb++; Nb.at(i) = min(Nb.at(i),abs(b-i)); } if(posb != 0){ int b = B.at(posb-1); Nb.at(i) = min(Nb.at(i),abs(b-i)); } } int minab = 1e9; for(auto &a : A) minab = min(minab,Nb.at(a)); int Q; cin >> Q; while(Q--){ int s,t; cin >> s >> t; s--; t--; int answer = abs(s-t); answer = min({answer,Na.at(s)+Na.at(t),Nb.at(s)+Nb.at(t),minab+min(Na.at(s),Nb.at(s))+min(Na.at(t),Nb.at(t))}); cout << answer << "\n"; } }