提出 #47798544
ソースコード 拡げる
#ARC155B Abs Abs Function
'''
問題概要:
X = [A-B, A+B] から開始する。Q個のタスクを処理せよ。
・Xにa-b,a+bを追加する。
・a≦x≦b を満たすXの要素があれば、0を出力。
そうでなければ、a,bに最も近いXの値を出力。
'''
from sortedcontainers import SortedList
#入力受取
Q,A,B=map(int,input().split())
#XをSortedListとして定義。初期値は(A-B,A+B)。
#SortedListなので重複すると困るのだが、よく考えるとべつに重複しても困らなかった。
X=SortedList([A-B,A+B])
#クエリを処理
for _ in range(Q):
t,a,b=map(int,input().split())
if t==1:
#要素を追加する。SortedListなので要素が重複するが、別に困らなかった。
X.add(a-b); X.add(a+b)
if t==2:
#a <= x <= b を満たすx∈Xがあれば、0を出力。これはbisectで可能。
Lt,Rt=X.bisect_left(a),X.bisect_right(b)
if Rt-Lt>0: print(0)
#そうでなければ、これらに最も近い要素を出力する。
else:
ans=10**18
if Lt>0: ans=min(ans,a-X[Lt-1])
if Rt<len(X): ans=min(ans,X[Rt]-b)
print(ans)
提出情報
| 提出日時 | |
|---|---|
| 問題 | B - Abs Abs Function |
| ユーザ | navel_tos |
| 言語 | Python (PyPy 3.10-v7.3.12) |
| 得点 | 500 |
| コード長 | 1247 Byte |
| 結果 | AC |
| 実行時間 | 1341 ms |
| メモリ | 128876 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 500 / 500 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt |
| All | 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_rand1_01.txt, 01_rand1_02.txt, 01_rand1_03.txt, 01_rand1_04.txt, 01_rand1_05.txt, 01_rand1_06.txt, 01_rand1_07.txt, 01_rand1_08.txt, 01_rand1_09.txt, 01_rand1_10.txt, 01_rand1_11.txt, 01_rand1_12.txt, 01_rand1_13.txt, 01_rand1_14.txt, 02_rand2_01.txt, 02_rand2_02.txt, 02_rand2_03.txt, 02_rand2_04.txt, 02_rand2_05.txt, 02_rand2_06.txt, 02_rand2_07.txt, 02_rand2_08.txt, 02_rand2_09.txt, 02_rand2_10.txt, 02_rand2_11.txt, 02_rand2_12.txt, 02_rand2_13.txt, 02_rand2_14.txt, 02_rand2_15.txt, 03_test_01.txt, 03_test_02.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 00_sample_01.txt | AC | 123 ms | 86092 KiB |
| 00_sample_02.txt | AC | 122 ms | 86076 KiB |
| 00_sample_03.txt | AC | 123 ms | 85880 KiB |
| 01_rand1_01.txt | AC | 1295 ms | 125656 KiB |
| 01_rand1_02.txt | AC | 1321 ms | 128876 KiB |
| 01_rand1_03.txt | AC | 1302 ms | 125932 KiB |
| 01_rand1_04.txt | AC | 1303 ms | 123852 KiB |
| 01_rand1_05.txt | AC | 1292 ms | 121244 KiB |
| 01_rand1_06.txt | AC | 1308 ms | 126080 KiB |
| 01_rand1_07.txt | AC | 1341 ms | 126380 KiB |
| 01_rand1_08.txt | AC | 911 ms | 113264 KiB |
| 01_rand1_09.txt | AC | 909 ms | 112084 KiB |
| 01_rand1_10.txt | AC | 911 ms | 109768 KiB |
| 01_rand1_11.txt | AC | 923 ms | 110412 KiB |
| 01_rand1_12.txt | AC | 909 ms | 113692 KiB |
| 01_rand1_13.txt | AC | 906 ms | 110804 KiB |
| 01_rand1_14.txt | AC | 928 ms | 114048 KiB |
| 02_rand2_01.txt | AC | 1024 ms | 109300 KiB |
| 02_rand2_02.txt | AC | 1031 ms | 110668 KiB |
| 02_rand2_03.txt | AC | 1019 ms | 108496 KiB |
| 02_rand2_04.txt | AC | 986 ms | 110256 KiB |
| 02_rand2_05.txt | AC | 981 ms | 109664 KiB |
| 02_rand2_06.txt | AC | 973 ms | 104712 KiB |
| 02_rand2_07.txt | AC | 1286 ms | 122320 KiB |
| 02_rand2_08.txt | AC | 1265 ms | 121884 KiB |
| 02_rand2_09.txt | AC | 1292 ms | 124040 KiB |
| 02_rand2_10.txt | AC | 670 ms | 99772 KiB |
| 02_rand2_11.txt | AC | 687 ms | 100876 KiB |
| 02_rand2_12.txt | AC | 692 ms | 99572 KiB |
| 02_rand2_13.txt | AC | 856 ms | 114484 KiB |
| 02_rand2_14.txt | AC | 859 ms | 116832 KiB |
| 02_rand2_15.txt | AC | 848 ms | 117712 KiB |
| 03_test_01.txt | AC | 123 ms | 86108 KiB |
| 03_test_02.txt | AC | 658 ms | 105640 KiB |