結果
| 問題 |
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)
taiga0629kyopro