結果

問題 No.3072 Speedrun Query
ユーザー cho435
提出日時 2025-03-21 22:32:48
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 323 ms / 2,500 ms
コード長 1,270 bytes
コンパイル時間 3,952 ms
コンパイル使用メモリ 251,560 KB
実行使用メモリ 7,324 KB
最終ジャッジ日時 2025-03-21 22:32:59
合計ジャッジ時間 9,505 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 21
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <atcoder/all>
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define rep(i, s, t) for (ll i = s; i < (ll)(t); i++)
#define all(x) begin(x), end(x)

template <typename T> bool chmin(T &x, T y) {
	return x > y ? (x = y, true) : false;
}
template <typename T> bool chmax(T &x, T y) {
	return x < y ? (x = y, true) : false;
}

struct IOST {
	IOST() {
		ios::sync_with_stdio(false);
		cin.tie(nullptr);
		cout << fixed << setprecision(20);
	}
} IOST;

int main(){
	int n,ka,kb;
	cin>>n>>ka>>kb;
	vector<int> a(ka),b(kb);
	rep(i,0,ka) cin>>a[i];
	rep(i,0,kb) cin>>b[i];
	auto dist_a=[&](int x){
		auto itr=lower_bound(a.begin(),a.end(),x);
		int res=1e9;
		if(itr!=a.end()) chmin(res,*itr-x);
		if(itr!=a.begin()) chmin(res,x-*(--itr));
		return res;
	};
	auto dist_b=[&](int x){
		auto itr=lower_bound(b.begin(),b.end(),x);
		int res=1e9;
		if(itr!=b.end()) chmin(res,*itr-x);
		if(itr!=b.begin()) chmin(res,x-*(--itr));
		return res;
	};
	int d_ab=1e9;
	rep(i,0,kb) chmin(d_ab,dist_a(b[i]));
	int q;
	cin>>q;
	rep(Qi,0,q){
		int s,t;
		cin>>s>>t;
		int ans=(t-s);
		int as=dist_a(s),bs=dist_b(s);
		int at=dist_a(t),bt=dist_b(t);
		chmin(ans,as+at);
		chmin(ans,as+d_ab+bt);
		chmin(ans,bs+bt);
		chmin(ans,bs+d_ab+at);
		cout<<ans<<"\n";
	}
}
0