結果
問題 |
No.3072 Speedrun Query
|
ユーザー |
![]() |
提出日時 | 2025-03-21 22:37:16 |
言語 | Java (openjdk 23) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,628 bytes |
コンパイル時間 | 2,078 ms |
コンパイル使用メモリ | 81,004 KB |
実行使用メモリ | 155,516 KB |
最終ジャッジ日時 | 2025-03-21 22:38:02 |
合計ジャッジ時間 | 36,879 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 20 TLE * 1 |
ソースコード
import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.TreeSet; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] sa = br.readLine().split(" "); int n = Integer.parseInt(sa[0]); int ka = Integer.parseInt(sa[1]); int kb = Integer.parseInt(sa[2]); sa = br.readLine().split(" "); TreeSet<Integer> seta = new TreeSet<>(); for (int i = 0; i < ka; i++) { seta.add(Integer.parseInt(sa[i])); } seta.add(-10000000); seta.add(10000000); sa = br.readLine().split(" "); TreeSet<Integer> setb = new TreeSet<>(); int min = n; for (int i = 0; i < kb; i++) { int e = Integer.parseInt(sa[i]); setb.add(e); min = Math.min(min, getDist(e, seta)); } setb.add(-10000000); setb.add(10000000); int q = Integer.parseInt(br.readLine()); StringBuilder sb = new StringBuilder(); for (int i = 0; i < q; i++) { sa = br.readLine().split(" "); int s = Integer.parseInt(sa[0]); int t = Integer.parseInt(sa[1]); int ans = t - s; ans = Math.min(ans, getDist(s, seta) + getDist(t, seta)); ans = Math.min(ans, getDist(s, setb) + getDist(t, setb)); ans = Math.min(ans, getDist(s, seta) + getDist(t, setb) + min); ans = Math.min(ans, getDist(s, setb) + getDist(t, seta) + min); sb.append(ans).append("\n"); } br.close(); System.out.print(sb.toString()); } static int getDist(int e, TreeSet<Integer> set) { int min = 100000000; min = Math.min(min, e - set.floor(e)); min = Math.min(min, set.ceiling(e) - e); return min; } }