結果
問題 | No.3072 Speedrun Query |
ユーザー |
![]() |
提出日時 | 2025-03-21 22:33:27 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 1,041 ms / 2,500 ms |
コード長 | 1,344 bytes |
コンパイル時間 | 2,246 ms |
コンパイル使用メモリ | 197,708 KB |
実行使用メモリ | 7,672 KB |
最終ジャッジ日時 | 2025-03-21 22:33:45 |
合計ジャッジ時間 | 17,854 ms |
ジャッジサーバーID (参考情報) |
judge7 / judge6 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 21 |
ソースコード
#include"bits/stdc++.h"using namespace std;int main(){// inputint N,X,Y;cin >> N >> X >> Y;vector<int> A(X,-1),B(Y,-1);for(int i = 0; i < X; i++) cin >> A[i];for(int i = 0; i < Y; i++) cin >> B[i];A.push_back(INT_MAX);B.push_back(INT_MAX);// prepint warpAB = N;for(int i = 0; i < X; i++){auto it = lower_bound(B.begin(),B.end(),A[i]);int tmp = *it - A[i];if(it != B.begin()){it--;tmp = min(tmp,abs(*it - A[i]));}warpAB = min(warpAB,tmp);}// solve + outputint Q;cin >> Q;while(Q--){int s,t;cin >> s >> t;int ans = t - s;int SA,SB,TA,TB;auto it = lower_bound(A.begin(),A.end(),s);SA = *it - s;if(it != A.begin()){it--;SA = min(SA, abs(*it - s));}it = lower_bound(A.begin(),A.end(),t);TA = *it - t;if(it != A.begin()){it--;TA = min(TA, abs(*it - t));}it = lower_bound(B.begin(),B.end(),s);SB = *it - s;if(it != B.begin()){it--;SB = min(SB, abs(*it - s));}it = lower_bound(B.begin(),B.end(),t);TB = *it - t;if(it != B.begin()){it--;TB = min(TB, abs(*it - t));}// use A onlyans = min(ans,SA + TA);// use B onlyans = min(ans,SB + TB);// use A -> Bans = min(ans,SA + TB + warpAB);// use B -> Aans = min(ans,SB + TA + warpAB);cout << ans << endl;}}