結果
問題 | No.3072 Speedrun Query |
ユーザー |
![]() |
提出日時 | 2025-03-22 16:30:16 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 1,091 ms / 2,500 ms |
コード長 | 1,692 bytes |
コンパイル時間 | 10,538 ms |
コンパイル使用メモリ | 468,696 KB |
実行使用メモリ | 7,324 KB |
最終ジャッジ日時 | 2025-03-22 16:30:43 |
合計ジャッジ時間 | 24,018 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 21 |
ソースコード
#include <bits/stdc++.h>#include <atcoder/all>#include <boost/multiprecision/cpp_dec_float.hpp>#include <boost/multiprecision/cpp_int.hpp>namespace mp = boost::multiprecision;using Bint = mp::cpp_int;using namespace std;using namespace atcoder;#define rep(i, n) for(int i=0;i<(n);++i)#define rep1(i, n) for(int i=1;i<=(n);i++)#define ll long longusing mint = modint998244353;using P = pair<ll,ll>;using lb = long double;using T = tuple<ll, ll, ll>;#ifdef LOCAL# include <debug_print.hpp># define dbg(...) debug_print::multi_print(#__VA_ARGS__, __VA_ARGS__)#else# define dbg(...) (static_cast<void>(0))#endifint main(){int n, ka,kb;cin >> n >> ka >> kb;vector<int> a(ka), b(kb);rep(i,ka) cin >> a[i];rep(i,kb) cin >> b[i];int q;cin >> q;auto get = [&](int s, vector<int>&a) -> int {auto it = lower_bound(a.begin(),a.end(),s);if(it==a.begin()) return *it;if(it==a.end()) {it--;return *it;}int d = (*it)-s;it--;if(s-(*it)<d) return *it;it++;return *it;};int d = 1e9;rep(i,ka) {int D = get(a[i],b);d = min(d, abs(a[i]-D));}dbg(d);while(q--) {int s, t;cin >> s >> t;int a1 = get(s,a);int a2 = get(t,a);int b1 = get(s,b);int b2 = get(t,b);int ans = t-s;dbg(a1,a2,b1,b2);ans = min(ans, abs(s-a1)+abs(t-a2));ans = min(ans, abs(s-b1)+abs(t-b2));ans = min(ans, abs(s-a1)+d+abs(t-b2));ans = min(ans, abs(s-b1)+d+abs(t-a2));cout << ans << endl;}return 0;}