Submission #47798507
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を使うが、要素の重複には十分注意すること。
#重複対策としては N not in X: X.add(N) としたり、先にX.discard(N)をしたりする方法がある。
X=SortedList([A-B])
X.discard(A+B); X.add(A+B)
#クエリを処理
for _ in range(Q):
t,a,b=map(int,input().split())
if t==1:
#要素を追加する。SortedListなので要素の重複に注意。
X.discard(a-b); X.add(a-b)
X.discard(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 | 1369 Byte |
| Status | AC |
| Exec Time | 1465 ms |
| Memory | 130436 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 | 122 ms | 85816 KiB |
| 00_sample_02.txt | AC | 122 ms | 86168 KiB |
| 00_sample_03.txt | AC | 124 ms | 85908 KiB |
| 01_rand1_01.txt | AC | 1453 ms | 127268 KiB |
| 01_rand1_02.txt | AC | 1465 ms | 130436 KiB |
| 01_rand1_03.txt | AC | 1126 ms | 117744 KiB |
| 01_rand1_04.txt | AC | 1447 ms | 129520 KiB |
| 01_rand1_05.txt | AC | 1113 ms | 116844 KiB |
| 01_rand1_06.txt | AC | 1438 ms | 129480 KiB |
| 01_rand1_07.txt | AC | 1113 ms | 116228 KiB |
| 01_rand1_08.txt | AC | 981 ms | 113284 KiB |
| 01_rand1_09.txt | AC | 964 ms | 114760 KiB |
| 01_rand1_10.txt | AC | 960 ms | 115260 KiB |
| 01_rand1_11.txt | AC | 967 ms | 118060 KiB |
| 01_rand1_12.txt | AC | 971 ms | 113628 KiB |
| 01_rand1_13.txt | AC | 982 ms | 112756 KiB |
| 01_rand1_14.txt | AC | 986 ms | 115432 KiB |
| 02_rand2_01.txt | AC | 1083 ms | 109140 KiB |
| 02_rand2_02.txt | AC | 1110 ms | 112112 KiB |
| 02_rand2_03.txt | AC | 1099 ms | 114864 KiB |
| 02_rand2_04.txt | AC | 873 ms | 102936 KiB |
| 02_rand2_05.txt | AC | 1075 ms | 115920 KiB |
| 02_rand2_06.txt | AC | 1029 ms | 109920 KiB |
| 02_rand2_07.txt | AC | 1106 ms | 119324 KiB |
| 02_rand2_08.txt | AC | 1378 ms | 130044 KiB |
| 02_rand2_09.txt | AC | 1121 ms | 119536 KiB |
| 02_rand2_10.txt | AC | 723 ms | 103196 KiB |
| 02_rand2_11.txt | AC | 726 ms | 99240 KiB |
| 02_rand2_12.txt | AC | 735 ms | 102004 KiB |
| 02_rand2_13.txt | AC | 854 ms | 113840 KiB |
| 02_rand2_14.txt | AC | 859 ms | 115280 KiB |
| 02_rand2_15.txt | AC | 873 ms | 113624 KiB |
| 03_test_01.txt | AC | 121 ms | 85908 KiB |
| 03_test_02.txt | AC | 737 ms | 110804 KiB |