結果

問題 No.2248 max(C)-min(C)
ユーザー shakayamishakayami
提出日時 2023-03-17 22:09:50
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 940 bytes
コンパイル時間 187 ms
コンパイル使用メモリ 81,680 KB
実行使用メモリ 100,364 KB
最終ジャッジ日時 2023-10-18 15:01:23
合計ジャッジ時間 27,738 ms
ジャッジサーバーID
(参考情報)
judge11 / judge14
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 38 ms
53,384 KB
testcase_01 AC 39 ms
53,384 KB
testcase_02 AC 37 ms
53,384 KB
testcase_03 WA -
testcase_04 WA -
testcase_05 WA -
testcase_06 WA -
testcase_07 WA -
testcase_08 WA -
testcase_09 WA -
testcase_10 WA -
testcase_11 WA -
testcase_12 WA -
testcase_13 WA -
testcase_14 WA -
testcase_15 WA -
testcase_16 WA -
testcase_17 WA -
testcase_18 WA -
testcase_19 WA -
testcase_20 WA -
testcase_21 WA -
testcase_22 WA -
testcase_23 WA -
testcase_24 WA -
testcase_25 WA -
testcase_26 WA -
testcase_27 WA -
testcase_28 WA -
testcase_29 WA -
testcase_30 WA -
testcase_31 WA -
testcase_32 WA -
testcase_33 WA -
testcase_34 WA -
testcase_35 WA -
testcase_36 WA -
testcase_37 WA -
testcase_38 WA -
testcase_39 WA -
testcase_40 WA -
testcase_41 WA -
testcase_42 WA -
testcase_43 WA -
testcase_44 WA -
testcase_45 WA -
testcase_46 WA -
testcase_47 WA -
testcase_48 AC 161 ms
97,924 KB
testcase_49 AC 662 ms
99,956 KB
testcase_50 AC 588 ms
99,932 KB
testcase_51 AC 672 ms
99,944 KB
testcase_52 AC 666 ms
99,832 KB
testcase_53 AC 162 ms
80,672 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

N=int(input())
A=[int(i) for i in input().split()]
B=[int(i) for i in input().split()]
X=[(A[i]+B[i])//2 for i in range(N)]
def solve(k):
    #max(C)-min(C)<=kとすることが可能かどうか
    for x in [A[0],B[0],X[0]]:
        MAX=x
        MIN=x
        for i in range(1,N):
            C=[]
            for y in [A[i],B[i],X[i]]:
                if max(MAX,y)-min(MIN,y)<=k:
                    MAX=max(MAX,y)
                    MIN=min(MIN,y)
                    C.append((max(MAX,y)-min(MIN,y),y))
            if len(C)==0:
                MAX=10**18
                MIN=-10**18
                break
            y=min(C)[1]
            MAX=max(MAX,y)
            MIN=min(MIN,y)
            
        if MAX-MIN<=k:
            return True
    return False
low=-1
high=1
while(not(solve(high))):
    high*=2
while(high-low>1):
    mid=(low+high)//2
    if solve(mid):
        high=mid
    else:
        low=mid
print(high)

    
0