Submission #47798544
Source Code Expand
#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)
Submission Info
| Submission Time | |
|---|---|
| Task | B - Abs Abs Function |
| User | navel_tos |
| Language | Python (PyPy 3.10-v7.3.12) |
| Score | 500 |
| Code Size | 1247 Byte |
| Status | AC |
| Exec Time | 1341 ms |
| Memory | 128876 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 500 / 500 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| 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 |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 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 |