結果
問題 | No.3072 Speedrun Query |
ユーザー |
|
提出日時 | 2025-03-21 23:07:05 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 1,137 ms / 2,500 ms |
コード長 | 2,363 bytes |
コンパイル時間 | 9,393 ms |
コンパイル使用メモリ | 485,724 KB |
実行使用メモリ | 7,936 KB |
最終ジャッジ日時 | 2025-03-21 23:07:35 |
合計ジャッジ時間 | 25,715 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 21 |
ソースコード
#include <bits/stdc++.h>#include <unordered_map>#include <stdlib.h>#include <boost/multiprecision/cpp_int.hpp>#include <atcoder/all>using namespace atcoder;using namespace boost::multiprecision;using namespace std;#define rep(i, a, n) for(ll i = a; i < n; i++)#define rrep(i, a, n) for(ll i = a; i >= n; i--)#define ll long long#define pii pair<int, int>#define pll pair<ll, ll>#define all(x) (x).begin(), (x).end()//constexpr ll MOD = 1000000007;constexpr ll MOD = 998244353;constexpr int IINF = 1001001001;constexpr ll INF = 1LL<<60;template<class t,class u> void chmax(t&a,u b){if(a<b)a=b;}template<class t,class u> void chmin(t&a,u b){if(b<a)a=b;}using mint = modint998244353;ll gcd(ll a, ll b){if(a%b == 0){return b;}else{return gcd(b, a%b);}}ll lcm(ll a, ll b){return a*b / gcd(a, b);}ll powMod(ll x, ll n) {if (n == 0) return 1 % MOD;ll val = powMod(x, n / 2);val *= val;val %= MOD;if (n % 2 == 1) val *= x;return val % MOD;}int main() {ll n, ka, kb; cin >> n >> ka >> kb;vector<ll> a(ka), b(kb);rep(i,0,ka) cin >> a[i], a[i]--;rep(i,0,kb) cin >> b[i], b[i]--;ll q; cin >> q;ll d01 = INF, d10 = INF;rep(i,0,ka){ll id = lower_bound(all(b), a[i])-b.begin();if(id < kb) chmin(d01, -a[i]+b[id]);}rep(i,0,kb){ll id = lower_bound(all(a), b[i])-a.begin();if(id < ka) chmin(d10, -b[i]+a[id]);}rep(i,0,q){ll s, t; cin >> s >> t;s--;t--;ll ans = t-s;ll ida1 = lower_bound(all(a), s)-a.begin();ll idb1 = lower_bound(all(b), s)-b.begin();ll ida2 = upper_bound(all(a), t)-a.begin();ll idb2 = upper_bound(all(b), t)-b.begin();ll da1 = INF, db1 = INF, da2 = INF, db2 = INF;if(ida1 < ka) chmin(da1, a[ida1]-s);if(ida1 > 0) chmin(da1, s-a[ida1-1]);if(idb1 < kb) chmin(db1, b[idb1]-s);if(idb1 > 0) chmin(db1, s-b[idb1-1]);if(ida2 < ka) chmin(da2, a[ida2]-t);if(ida2 > 0) chmin(da2, t-a[ida2-1]);if(idb2 < kb) chmin(db2, b[idb2]-t);if(idb2 > 0) chmin(db2, t-b[idb2-1]);chmin(ans, da1+da2);chmin(ans, db1+db2);chmin(ans, db1+da2+d01);chmin(ans, da1+db2+d10);cout << ans << endl;}return 0;}