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
AC × 3
AC × 34
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