結果
| 問題 | No.1597 Matrix Sort | 
| コンテスト | |
| ユーザー |  taiga0629kyopro | 
| 提出日時 | 2021-07-09 22:12:07 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                TLE
                                 
                            (最新) 
                                AC
                                 
                            (最初) | 
| 実行時間 | - | 
| コード長 | 1,239 bytes | 
| コンパイル時間 | 227 ms | 
| コンパイル使用メモリ | 82,576 KB | 
| 実行使用メモリ | 103,480 KB | 
| 最終ジャッジ日時 | 2024-07-01 16:43:24 | 
| 合計ジャッジ時間 | 26,375 ms | 
| ジャッジサーバーID (参考情報) | judge1 / judge3 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 24 TLE * 3 | 
ソースコード
n,k,p=map(int,input().split())
a=list(map(int,input().split()))
b=list(map(int,input().split()))
a.sort()
b.sort()
####二分探索###################################
#配列は昇順にソートずみ
def bilower(a,x):
    # a[i]<=x となる最大のiを返す ない時は-1
    if len(a)==0:return -1
    mi=0
    ma=len(a)-1
    if a[0]>x:return -1
    if a[ma]<=x:return ma
    while ma-mi>1:
        mid=(ma+mi)//2
        if a[mid]<=x:mi=mid
        else:ma=mid
    return mi
def bihigher(a,x):
    # a[i]>=x となる最小のiを返す ない時は len(a)
    if len(a)==0:return 0
    mi=0
    ma=len(a)-1
    if a[ma]<x:return ma+1
    if a[0]>=x:return 0
    while ma-mi>1:
        mid=(ma+mi)//2
        if a[mid]>=x:ma=mid
        else:mi=mid
    return ma
def birange(a,l,r):
    #l<=a[i]<=r となるiの個数を返す
    left=bihigher(a,l)
    right=bilower(a,r)
    return right-left+1
################################################
def f(x):
    res=0
    for i in range(n):
        res+=birange(b,-a[i],x-a[i])
        res+=birange(b,p-a[i],x+p-a[i])
    return res
if f(0)>=k:
    print(0)
    exit()
ng=0
ok=p-1
while ok-ng>1:
    mid=(ok+ng)//2
    if f(mid)>=k:ok=mid
    else:ng=mid
print(ok)
            
            
            
        