結果
問題 | No.3072 Speedrun Query |
ユーザー |
|
提出日時 | 2025-03-21 22:08:40 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,401 ms / 2,500 ms |
コード長 | 1,770 bytes |
コンパイル時間 | 360 ms |
コンパイル使用メモリ | 82,432 KB |
実行使用メモリ | 147,736 KB |
最終ジャッジ日時 | 2025-03-21 22:09:06 |
合計ジャッジ時間 | 22,184 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 21 |
ソースコード
import collections,sys,math,functools,operator,itertools,bisect,heapq,decimal,string,time,random #sys.setrecursionlimit(10**9) #sys.set_int_max_str_digits(0) input = sys.stdin.readline #n = int(input()) # #alist = [] #s = input() n,ka,kb = map(int,input().split()) #for i in range(n): # alist.append(list(map(int,input().split()))) a = [-1<<60] + list(map(int,input().split())) + [1<<60] b = [-1<<60] + list(map(int,input().split())) + [1<<60] a_b_cost = 1<<60 for i in a: if abs(i) > 1<<59:continue idx = bisect.bisect_left(b,i) for j in range(idx-1,idx+2): if 0 > j or j >= len(b):continue a_b_cost = min(a_b_cost,abs(i - b[j])) #print(i,b[j]) q = int(input()) for i in range(q): s,t = map(int,input().split()) ans = 1<<60 ans = min(ans,abs(s-t)) a_s_id = bisect.bisect_left(a,s) a_s_cost = 1<<60 for j in range(a_s_id-1,a_s_id+2): if 0> j or j >= len(a):continue a_s_cost = min(a_s_cost,abs(s-a[j])) a_t_id = bisect.bisect_left(a,t) a_t_cost = 1<<60 for j in range(a_t_id-1,a_t_id+2): if 0> j or j >= len(a):continue a_t_cost = min(a_t_cost,abs(t-a[j])) b_s_id = bisect.bisect_left(b,s) b_s_cost = 1<<60 for j in range(b_s_id-1,b_s_id+2): if 0> j or j >= len(b):continue b_s_cost = min(b_s_cost,abs(s-b[j])) b_t_id = bisect.bisect_left(b,t) b_t_cost = 1<<60 for j in range(b_t_id-1,b_t_id+2): if 0 >j or j >= len(b):continue b_t_cost = min(b_t_cost,abs(t-b[j])) #print(a_s_cost,a_t_cost,a_b_cost) ans = min(ans,a_s_cost + a_t_cost) ans = min(ans,b_s_cost + b_t_cost) ans = min(ans,a_s_cost + a_b_cost + b_t_cost) ans = min(ans,b_s_cost + a_b_cost + a_t_cost) print(ans)